
Свои команды в Symfony: рабочие приёмы из практики
Консольные команды в Symfony обрастают костылями быстрее контроллеров: аргументы валидируются руками, прогресс молчит, а cron запускает их параллельно. Разбираем приёмы, которые убирают эту боль.

Консольные команды в Symfony обрастают костылями быстрее контроллеров: аргументы валидируются руками, прогресс молчит, а cron запускает их параллельно. Разбираем приёмы, которые убирают эту боль.

Как работают ограничения валидатора в Symfony 7.x, где новички теряют данные, почему валидация в контроллере не срабатывает и чем платить за кастомные constraints.

Сериализация тянет всю базу, фильтры не работают, а ошибки валидации приходят в формате, который фронтенд не понимает. Разбираем частые грабли API Platform 3.x на Symfony и что с ними делать.

Дефолтная конфигурация API Platform удобна для разработки и опасна в проде: открытая документация, N+1-запросы, отсутствие лимитов. Разбираем, что проверить перед релизом.

API Platform обещает REST и GraphQL из коробки поверх Doctrine-сущностей. Разбираем, где это экономит недели, а где превращает простой эндпоинт в борьбу с абстракциями.

Воркер держит соединение с базой часами, retry дублирует платёж, а очередь растёт на сотнях сообщений в секунду. Разбираем, что именно ломается в Symfony Messenger и как это чинить.

Когда логика после регистрации пользователя обрастает уведомлениями, начислением бонусов и логами, контроллер превращается в кашу. Событийная модель Symfony разгружает его — если знать разницу между слушателем и подписчиком и не наступить на порядок вызовов.

EventListener и EventSubscriber кажутся простыми, пока порядок вызова не начинает зависеть от загрузки бандлов, а бизнес-логика тихо не срабатывает дважды. Разбираем частые грабли Symfony 7.x.

Слушатель, который делает HTTP-запрос внутри kernel.request, добавляет эти миллисекунды к каждому запросу приложения. Разбираем, что проверить в событийной подсистеме до выката.

Autowiring экономит время в разработке, но на проде даёт скрытые расходы: холодная сборка контейнера, лишние публичные сервисы, дубли инстансов. Разбираем, что проверить перед деплоем Symfony 6.x/7.x.

Autowiring закрывает 90% случаев регистрации сервисов в Symfony, но ломается на скалярах, интерфейсах с двумя реализациями и коллекциях по тегам. Разбираем, когда чего хватает и чем платишь.

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