<b>Symfony ломают не роуты, а границы слоёв — вот где обычно прячется долг</b>
Symfony хорошо живёт в больших кодовых базах, но только если не превращать контейнер и контроллеры в свалку зависимостей. Главная ошибка — тащить в один класс всё подряд: запросы, бизнес-логику, доступ к БД, форматирование ответа.
Рабочая схема проще:
— контроллер получает вход и отдаёт ответ;
— сервис держит бизнес-правило;
— репозиторий или Query Object отвечает за выборку;
— DTO фиксирует форму данных между слоями.
Ещё одна типовая поломка — смешивать инфраструктуру и домен. Если валидация, транзакции, отправка писем и запись в аудит идут в одном методе, тестировать это потом больно. Разносите побочные эффекты отдельно: сначала решение, потом действие. Так проще мокать и проще менять реализацию без каскада правок.
В Symfony особенно полезно не злоупотреблять автосвязыванием по умолчанию. Явные интерфейсы, точечные теги и нормальные конфиги снижают магию, а вместе с ней и количество сюрпризов в проде.
Если код вокруг фреймворка стал слишком «умным», начинайте с инвентаризации зависимостей: где запрос, где логика, где I/O. Обычно после этого половина проблем с архитектурой становится видна сразу.
Laravel & PHP Deep — фреймворки и пакеты
@laravel_php_deep
<b>Symfony ломают не роуты, а границы слоёв — вот где обычно прячется долг</b>
Этот пост опубликован в Telegram-канале Laravel & PHP Deep — фреймворки и пакеты. Подписаться можно по ссылке: @laravel_php_deep.