Паттерны проектирования
Repository и Service паттерны, а также принципы чистого кода позволяют нам переработать ваш проект, сделав его удобным для разработчика и увеличив скорость работы в 2 раза.
Зачем вообще нужно «перестраивать» проект?
В многолетних проектах на Laravel/PHP обычно накапливаются следующие проблемы:
«Спагетти»-код
Внутри контроллера: валидация, бизнес-логика, запросы, вызовы сторонних API, события — всё перемешано.
Если измените одну часть, ломаются другие.
Дублирование кода
Одни и те же where-условия, одни и те же join, одни и те же вычисления повторяются в разных контроллерах и сервисах.
Чтобы исправить баг, приходится обходить не 1 место, а 5–6.
Бизнес-правила «разбросаны»
Правила вроде блокировки клиента, отмены заказа, расчёта кэшбэка — не собраны в одном месте.
Новый разработчик постоянно задаёт вопрос: «Где находятся эти бизнес-правила?»
Писать тесты сложно
Так как внутри контроллера находится всё, приходится писать не unit-тесты, а только большие integration/feature-тесты.
Mock и изоляция затруднены.
Скорость работы падает
Повсюду запросы Eloquent: проблема N+1, тяжёлые join, отсутствие кеширования там, где оно необходимо.
С ростом функционала время ответа становится больше.
Чтобы решить эти проблемы, очень полезно структурировать проект заново, основываясь на паттернахRepository + Serviceи принципах чистого кода.