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

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

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

Разбираем рабочую конфигурацию PHPUnit для Symfony 7.x: отдельная БД для тестов, WebTestCase, изоляция транзакций и типичные ошибки, из-за которых тесты начинают падать через раз.

Тесты Symfony падают то в CI, то локально, гоняются по десять минут и всё равно пропускают баги. Разбираем частые ошибки в организации тестов и что с ними делать.

Что проверить в тестах Symfony-приложения до релиза: изоляция базы, границы юнита и функционального теста, обработка внешних сервисов и проверки, которые ловят падения в продакшене раньше пользователей.

Консольная команда, которая нормально работает в разработке, под cron ломается тихо: съедает память, не отдаёт код возврата, дублирует запуски. Что проверить перед деплоем.

Атрибут AsCommand, наследование от Command и Invokable-команды из Symfony 7.3 решают одну задачу по-разному. Разбираем цену каждого подхода и когда какой уместен.

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

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

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

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

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