<b>5 мест в Laravel, где тихо теряется производительность и растёт техдолг</b>
Есть наблюдение которое стоит проверить: в Laravel обычно «тормозит» не один большой кусок, а связка мелких решений.
— N+1 в отношениях. Если в списке моделей тянете связи внутри цикла, база платит за каждый элемент отдельно. Решение почти всегда одно: заранее грузить нужное через <code>with()</code> и не надеяться на магию.
— Лишняя логика в контроллере. Когда там и валидация, и маппинг, и запросы, и форматирование ответа, код начинает расползаться. Выносите правила в Form Request, а бизнес-логику — в сервисы или action-классы.
— Тяжёлые коллекции вместо запросов. Частая ошибка — сначала забрать всё, потом фильтровать и считать в PHP. Если условие можно выразить в SQL, пусть его выполнит база.
— Слепое использование событий и observers. Удобно, пока не появляется цепочка скрытых сайд-эффектов. Для критичных операций лучше держать явный вызов и понятный порядок действий.
— Отсутствие границ у пакетов и helpers. Когда любой модуль начинает дергать любой другой напрямую, тестировать это становится больно. Лучше сразу задавать слой API между частями проекта.
Если нужно быстро навести порядок — начните с профилирования запросов и поиска мест, где код выглядит «красиво», но делает лишнюю работу.
Laravel & PHP Deep — фреймворки и пакеты
@laravel_php_deep
<b>5 мест в Laravel, где тихо теряется производительность и растёт техдолг</b>
Этот пост опубликован в Telegram-канале Laravel & PHP Deep — фреймворки и пакеты. Подписаться можно по ссылке: @laravel_php_deep.