Laravel & PHP Deep — фреймворки и пакеты

<b>Symfony ломают не роуты, а границы слоёв — вот где обычно прячется долг</b>

<b>Symfony ломают не роуты, а границы слоёв — вот где обычно прячется долг</b>

Symfony хорошо живёт в больших кодовых базах, но только если не превращать контейнер и контроллеры в свалку зависимостей. Главная ошибка — тащить в один класс всё подряд: запросы, бизнес-логику, доступ к БД, форматирование ответа.

Рабочая схема проще:
— контроллер получает вход и отдаёт ответ;
— сервис держит бизнес-правило;
— репозиторий или Query Object отвечает за выборку;
— DTO фиксирует форму данных между слоями.

Ещё одна типовая поломка — смешивать инфраструктуру и домен. Если валидация, транзакции, отправка писем и запись в аудит идут в одном методе, тестировать это потом больно. Разносите побочные эффекты отдельно: сначала решение, потом действие. Так проще мокать и проще менять реализацию без каскада правок.

В Symfony особенно полезно не злоупотреблять автосвязыванием по умолчанию. Явные интерфейсы, точечные теги и нормальные конфиги снижают магию, а вместе с ней и количество сюрпризов в проде.

Если код вокруг фреймворка стал слишком «умным», начинайте с инвентаризации зависимостей: где запрос, где логика, где I/O. Обычно после этого половина проблем с архитектурой становится видна сразу.
Этот пост опубликован в Telegram-канале Laravel & PHP Deep — фреймворки и пакеты. Подписаться можно по ссылке: @laravel_php_deep.
start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @dumay. Быстрый тест: $20 за канал, $1000 за пакет по сети.