Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.34K photos
20 videos
26 files
4.03K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Как легко создать PDF-файл из HTML в Symfony с помощью WeasyPrint

Те разработчики, которые сталкивались с созданием PDF-документа, понимают, почему другие разработчики избегают работы с ним.🧐

🔍Snappy и wkhtmltopdf, рекомендуемые инструменты для Symfony, но они имеют свои ограничения, такие как устаревшие движки и проблемы безопасности.

🐍WeasyPrint описывается как решение на основе Python, создающее PDF-документы из HTML с сильной поддержкой пагинации и соблюдением веб-стандартов для печати.

🔑Ключевые особенности WeasyPrint включают поддержку пагинации📃, создание документов высокого качества, включая документы PDF/A, закладки, гиперссылки, векторные изображения и базовую поддержку форм PDF. 🚨В статье подчеркивается важность рассмотрения мер безопасности при работе с пользовательскими вводами.

🛠️Приводится практический пример, демонстрирующий, как рендерить HTML с использованием Twig-шаблонов в приложении Symfony и генерировать PDF с использованием WeasyPrint.
👍31
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Подборка лучших статей «Библиотеки программиста» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок

🗺️ Дорожная карта Go-разработчика в 2023 году
🧑‍💻 6 карьерных советов программисту
⚖️ 25 курсов, книг и подкастов для развития критического мышления
🐍🎨 Генерация красивых QR-кодов с помощью Python
🔈16+ лучших нейронок для синтеза речи
FAQ по трудоустройству: разбираем самые популярные вопросы
👨‍💻 7 типов «сложных» разработчиков
Дорожная карта DevOps-инженера в 2023 году
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
👀 6 способов привлечь внимание работодателя
🤖📜 Искусственный интеллект: краткая история
🔤 Азбука SQL в примерах (часть 1 + часть 2)
🔢 Как научиться решать сложные задачи
🏆 Самые популярные языки программирования 2023
📰 10 признаков фейковой вакансии
🏃 Самоучитель по Go для начинающих (часть 1 + часть 2)
⚛️ 45 вопросов для подготовки к собеседованию по React
🐍 5 задач для подготовки к собеседованию по Python
🐍🤖✍️ Документирование кода и проектов на Python с помощью ChatGPT
🔥51👍1🎉1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
👍43🥱1
Как реализовать простую очередь в Symfony

Реализация простой системы очередей в Symfony с использованием компонента Messenger и Redis в качестве транспортного уровня включает несколько шагов:

1️⃣Установка необходимых пакетов: Используйте Composer для установки компонента Symfony Messenger и адаптера Redis.

2️⃣Настройка транспорта: Настройте подключение к серверу Redis в файле .env, указав расположение сервера и желаемое имя очереди.

3️⃣Создание сообщения и обработчика: Используйте команды Symfony console для создания классов сообщения и соответствующего обработчика. Эти классы представляют данные для отправки и логику, которая будет выполнена при получении сообщения.

4️⃣Маршрутизация сообщения к транспорту: Настройте компонент Messenger для связывания класса сообщения с желаемым транспортом в файле messenger.yaml.

5️⃣Отправка сообщения: Используйте службу MessageBusInterface для отправки сообщений из различных частей приложения, таких как контроллеры или службы.

6️⃣Получение сообщения: Используйте команду messenger:consume, чтобы запустить рабочий процесс, прослушивающий указанный транспорт и выполняющий соответствующий обработчик. Можно запускать несколько рабочих процессов параллельно для увеличения пропускной способности.

Особенность компонента Messenger заключается в гибкости, позволяющей реализовывать различные паттерны обмена сообщениями и использовать различные транспорты помимо Redis, такие как AMQP, Doctrine, Amazon SQS, Google Pub/Sub и др.
👍7😁32
Выбираем подходящий PHP-фреймворк для проекта

Здесь обсуждаются различные PHP-фреймворки и их пригодность для различных типов проектов, предоставляя исследования Laravel, Symfony, Yii, Slim и Laminas (Mezzio). Вот некоторые тезисы:

Laravel:

🟠Популярен в PHP-сообществе, баланс между сложностью и функциональностью.
🟠Подходит для B2B-решений, проектов с высокой нагрузкой и сложной бизнес-логикой.
🟠Включает готовые решения для общих задач, поддерживающее сообщество, и Laravel Octane для оптимизации производительности.

Symfony:

🟠Гибкий и настраиваемый фреймворк с активным сообществом.
🟠Используется в крупных корпоративных проектах, таких как Spotify и Yahoo.
🟠Более сложный чем Laravel, с более высоким порогом входа, но предлагает решения для различных случаев.

Yii:

🟠Объектно-ориентированный MVC-фреймворк с генерацией CRUD.
🟠Используется для приложений любой сложности, но утрачивает популярность в сравнении с Laravel.
🟠Известен быстрым развитием, соблюдением принципа DRY, и Ajax-виджетами для валидации данных.

Slim:

🟠Микрофреймворк для простых, но мощных веб-приложений и API.
🟠Быстрый и легкий, подходит для маленьких задач, где Symfony и Laravel могут быть избыточны.
🟠Используется для небольших API, микросервисов и отдельных сервисов в рамках монолита.

Laminas (Mezzio):

🟠Mezzio — это форк Zend Framework, созданный для модульных приложений.
Подходит для различных целей, в основном для API и микросервисов.
Хорошая поддержка, совместимость с Swoole и богатые библиотеки для синхронизации с внешними сервисами.
👍10🥱62
Зачем создавать собственные исключения?

Исключения предназначены для обработки неожиданных ситуаций, и их использование особенно полезно при взаимодействии с внешними ресурсами, такими как сторонние API. В случае поддержки публичных API рекомендуется использовать исключения при обнаружении некорректных входных данных, чтобы предотвратить попадание их в основную часть приложения.

Статья сравнивает встроенные исключения с собственными. Рекомендуется создавать собственные исключения для обработки конкретных случаев, которые могут быть ловлены другими частями кода, вместо использования общего встроенного исключения. Приведены примеры использования обоих видов исключений.

Следует осторожно обращаться с блоками catch, ведь есть шанс «поглощения» исключений. Например, при работе с базой данных, критические ошибки следует допускать и записывать в лог, чтобы обеспечить прозрачность отслеживание проблем.
👍62🤩1
В чем разница между WHERE и HAVING?

WHERE и HAVING являются двумя различными операторами условий в языке SQL, которые используются для фильтрации данных.

Оператор WHERE используется в выражении SELECT для фильтрации строк до их группировки и агрегации. Он определяет условия, которым должны соответствовать отдельные записи перед тем, как они будут включены в результирующий набор данных.

В примере оператор WHERE фильтрует строки таблицы employees и выбирает только те строки, где значение столбца 'department' равно 'Sales'.

Оператор HAVING используется после операции GROUP BY в выражении SELECT для фильтрации результатов группировки и агрегации. Он определяет условия, которым должны соответствовать группы записей, чтобы они были включены в результирующий набор данных после группировки.

В примере оператор HAVING фильтрует результаты группировки таблицы employees и выбирает только те группы записей, где количество сотрудников больше 5.

Таким образом, основная разница между WHERE и HAVING заключается в том, что WHERE фильтрует строки до группировки и агрегации, а HAVING фильтрует результаты после группировки и агрегации.

#вопросы_с_собеседований
👍156🥱4🔥21
🤔Некоторые разработчики недооценивают полезность трейтов, обвиняя в «переинжиниринге» или «преждевременной абстракции». Однако, не следует обобщать все случаи использования трейтов, вот яркий пример их эффективного применения в Laravel.

🌐 Практический пример: Livewire Toaster:
Создается пакет «Livewire Toaster» для управления всплывающими уведомлениями, используя трейты и декораторы. Подчеркивается «умное» управление временем отображения сообщений и легкость в использовании.

💻 Реализация:
Автор предоставляет код для регистрации коллекторов в сервис-контейнере Laravel с использованием метода extend. Он демонстрирует создание декораторов, таких как «AccessibleCollector» и «TranslatingCollector».
👍43🔥3🎉2🌚2
📈 Обзор рынка труда в ИТ: III квартал 2023 года

В этой статье обсудим зарплату программистов в III квартале 2023 года, динамику вакансий, тенденции рынка труда в ИТ и многое другое. Присоединяйтесь!

Читать статью
👏7🌚31😁1
Недокументированная возможность в Phpstorm: нативная консоль php -a с автодополнением из IDE

В PhpStorm есть хитрость, позволяющяя использовать консоль PHP как альтернативу Python Console. Здесь рассказывается о возможности интегрировать консоль PHP с IDE, добавив возможность отладки, что обеспечивает автодополнение и другие функции IDE в консоли PHP.
🔥12👍3🥱3
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
2
Обновление Laravel: с 5.7 до 10.x

В Laravel есть возможность прямого перехода к последней версии (Laravel 10.x) независимо от текущей версии, обходя инкрементальные обновления. Процесс подробно описывается в пяти шагах:

1️⃣Настройка окружения:
Создание окружения для Laravel 10.x, требующего PHP 8.1 и указанных расширений.

2️⃣Обновление только Laravel:
Изначально фокус на обновлении базовых пакетов Laravel.
Создание нового файла composer.json на основе ветки Laravel 10.x из GitHub.
Запуск composer install для выявления и пошагового устранения ошибок.

3️⃣Установка зависимостей:
Решение проблем, связанных с фреймворком, сравнив изменения между текущей версией и Laravel 10.x на GitHub.
Ручное объединение изменений там, где это необходимо, особенно в файлах с пользовательскими модификациями.

4️⃣Установка оставшихся зависимостей:
Установка оставшихся зависимостей, учитывая изменения между файлами composer.json.back и новым composer.json.
Использование сравнения в Git для выявления и избегания установки зависимостей, удаленных Laravel.

5️⃣Финальные рекомендации:
Уделять особое внимание тестированию для обеспечения успешного обновления и правильной работы системы.
Регулярная проверка обновлений в репозитории Laravel и обращение к руководствам по обновлению Laravel для дополнительных идей.
🥱8🔥42
#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
3👍2
Узнавайте обо всех ваших уведомлениях Laravel с помощью нового пакета Paragraphs.

Это представление нового пакета от компании Paragraph, который обеспечивает более полный контроль над процессом отправки уведомлений. Речь идет о том, как этот инструмент может улучшить видимость и анализ исходящих коммуникаций.
2
В чем разница между «echo» и «print»?

В PHP разница между echo и print заключается в следующем:

1.Возвращаемое значение:

echo: Не возвращает значение. Может принимать несколько аргументов, разделенных запятыми, и выводит их.
print: Всегда возвращает 1, поэтому может использоваться в выражениях.

2.Аргументы:

echo: Может принимать несколько аргументов, и их использование разделяется запятыми.
print: Принимает только один аргумент. Если вы пытаетесь передать ему более одного аргумента или использовать запятые для разделения, это вызовет ошибку.

3.Использование:

echo: Чаще используется для вывода HTML-кода и других строковых данных.
print: Часто используется для вывода единственного значения или переменной, особенно в контексте, где требуется возвращаемое значение.

#вопросы_с_собеседований
👍17🥱91🤔1
Как решить исключение «Маршрут не найден» в Laravel 10

Исключение «Маршрут не найден» является распространенной проблемой в Laravel, особенно в 10 версии. В большинстве случаев отображается страница 404, но здесь предлагается возможность перенаправления на любую другую страницу:

🟠На страницу 404
🟠На домашнюю страницу
🟠Перенаправление назад, если маршрут не существует
🟠Перенаправление с использованием обработчика исключений

Осталось только выбрать, что вам по вкусу
🥱6🥰4
Обзор LiveWire 3 и Volt

Эта статья-обзор новой, уже третьей версии Livewire. Помимо текстовой версии, есть также видео. Также рассматривается новинка — Volt. Довольно интересный и подробный материал, авторы которого постарались грамотно всё разложить по полочкам
👍1🌚1