Здесь собран и постепенно пополняется список полезных материалов и ссылок на внешние материалы по PHP-фреймворку Symfony.
Последнее изменение: 15 ноября, 2023 в 13:45
Основные ресурсы
- Официальный ресурс: https://symfony.com
- GitHub: https://github.com/symfony/
С чего начать
- Обновить PHP до последней актуальной версии, поддерживаемой фреймворком. Также потребуется актуальная версия пакетного менеджера Composer.
- Установить Symfony CLI – инструмент командной строки для создания и запуска проектов на Symfony.
- Пройти бесплатный онлайн-курс “Symfony. Быстрый старт“. Также можно купить оффлайн версию книги в формате PDF.
- Опциально. При желании и наличии возможности пройти платные курсы SymfonyCasts (на английском языке).
Создание нового проекта
Проверить зависимости, необходимые для работы Symfony
Создать проект с помощью Symfony CLI
Стандартный шаблон включает в себя следующие пакеты: symfony/console
, symfony/dotenv
, symfony/framework-bundle
(включает: symfony/cache
, symfony/config
, symfony/routing
и другие). Подходит для микросервисов, консольных приложений, API и т. п.
Альтернативный вариант создания проекта без Symfony CLI
Версия с расширенным набором пакетов
Включает множество дополнительных пакетов, полезных для традиционных веб-приложений. Набор может быть избыточен, в таком случае можно воспользоваться базовой версией шаблона приложения и подключить все необходимые пакеты вручную.
Альтернативный вариант создания проекта без Symfony CLI
Symfony CLI
Запуск сервера
Остановка сервера
Просмотр логов
Запуск асинхронной команды с автоматическим перезапуском при внесении изменений в файлы исходных кодов
Сборка encore с переменной окружения
Проверка пакетов на безопасность
Основные пакеты
Здесь перечислены основные расширения для Symfony.
Инструменты разработки
- Debug Bundle – интеграция компонента VarDumper и команды ServerLogCommand (
bin/console server:dump)
. - Profiler – инструмент отладки запросов.
- Maker – инструмент командной строки для генерации кода.
- Monolog Bundle – интеграция библиотеки Monolog для логирования
Мета-пакет, включающий все выше перечисленные пакеты:
Make Bundle:
Doctrine
Набор библиотек для работы с СУБД. Включает в себя следующие пакеты:
- Doctrine/ORM – Object-Relation Mapper.
- Doctrine/DoctrineBundle – Doctrine DBAL & ORM бандл для Symfony.
- Doctrine/DoctrineMigrationsBundle – интеграция библиотеки Doctrine Migrations для Symfony.
Создание тестов
Набор пакетов для создания модульных и других тестов.
- PHPUnit – фреймворк для разработки тестов.
- DoctrineFixturesBundle – интеграция Doctrine Data Fixtures в Symfony (документация).
- DoctrineTestBundle – бандл для изоляции тестов (откат транзакций после выполнения).
Panther – бандл для создания веб-тестов.
Формы и валидация
- Компонент для создания форм (github, документация)
- Компонент для создания ограничений и валидаторов (github, документация)
EasyAdmin
Бандл для быстрой разработки административных интерфейсов.
Аутентификация и авторизация
Security Bundle (документация) – содержит множество инструментов для обеспечения безопасности приложения.
Конечные автоматы
Workflow Component (github, документация) – инструменты для управления рабочим процессом или конечным автоматом.
Шаблонизатор Twig и расширения
- Twig – шаблонизитор.
- Twig/Intl – вспомогательные функции, использующие расширение интернационализации intl.
- Twig/CssInliner – фильтр inline_css для внедрения кода CSS.
- Twig/Inky – фильтр inky_to_html для внедрения шаблонов Inky Email.
- Twig/String – вспомогательные функции для работы со строками.
- Twig/Html – содержит пару функций для HTML.
- Twig/Markdown – конвертор разметки Markdown в HTML и обратно.
Установка
Расширения для Twig
Assets – компонент для генерации ссылок в шаблонах (github, документация).
Асинхронное выполнение кода и передача сообщений
Messenger Component – компонент (документация), помогающий приложениям передавать и получать сообщения от других приложений с помощью очереди сообщений.
Фронтенд
Бандл, интегрирующий WebPack Encore (документация) в Symfony. WebPack Encore – это простой способ интеграции WebPack в веб-приложение.
UX Turbo – интеграция Hotwired Turbo в приложение.
Stimulus
Набор JavaScript библиотек для организации и переиспользования кода. Отлично подходит для веб-приложений с серверным рендерингом страниц (в частности Twig в Symfony).
Письма и уведомления
Mailer Componet (документация) – компонент для формирования и отправки электронных писем.
Notification Component (документация) – универсальный компонент для формирования и отправки сообщений (уведомлений) в различные каналы связи (email, sms, push-уведомления, мессенджеры и т. п.).
Каналы связи распространяются в виде отдельных пакетов (список всех доступных каналов), например:
API
Комплексный компонент для разработки API.
- Официальный ресурс
- Документация The API Platform Code Library
HTTP
HTTP-клиент для Syfmony (github, документация).
Пакеты сторонних разработчиков
- knpuniversity/oauth2-client-bundle – клиент для авторизаци по OAuth2-протоколу. Поддерживается большое количество провайдеров, таких как Яндекс, Google, VK и др.
- nelmio/security-bundle – пакет для обеспечения безопасности на стороне клиента (защита от XSS и прочее).
Docker
- Официальная документация – как использовать Docker с Symfony.
- KubePHP – оптимизированный образ на основе официального образа PHP, ориентированный как для разработки, так и продакшина. Позволяет разрабатывать облачные веб-приложения, ориентированные на запуск в средах оркестрации Kubernetes и Docker Swarm. Поддерживает Symfony из коробки.
Doctrine
- Doctrine best practices – презентация по лучшим практикам использования Doctrine и ORM (на английском языке). Для лучшего понимания практик рекомендуем к прочтению книгу Объекты. Стильное ООП.
- Get Results From Doctrine As DTOs – пример создания DTO-объектов с помощью репозиториев Doctrine.
Twig
- Официальный сайт: https://twig.symfony.com/
- Cheatsheet: https://github.com/okeeffed/cheat-sheets/blob/master/twig-cheat-sheet.md
- Документация: https://symfony.com/doc/current/templates.html
Формы
Создание формы
Шаг 1. Сгенерировать Entity.
Файл будет создан в директории src/Entity.
Шаг 2. Сгенерировать класс формы. Название класса должно заканчиваться на Type.
Файл будет создан в директории src/Form.
Шаг 3. Сгенерировать контроллер.
Файл будет создан в директории src/Controller. Шаблон будет создан в директории templates.
Шаг 4. Отредактировать класс контроллера.
Шаг 5. Добавить форму в шаблон.
Настройка темы для форм
Открыть файл config/twig.yaml. В секцию twig добавить следующую строку:
Подробнее см. в документации.
Прочее
Внедрение глобальных переменных в классы и шаблоны
Создать переменную окружения в файле .env:
В файле config/services.yaml добавить следующие строки:
Внедрить переменную в контроллер или любой другой сервисный класс через конструктор.
Для передачи переменной в Twig, открыть файл config/packages/twig.yaml и добавить следующую строку:
Вывести значение переменной в любом шаблоне: