← Модульные решения

Паттерны проектирования

Паттерн Repository & Service

Repository и Service паттерны, а также принципы чистого кода позволяют нам переработать ваш проект, сделав его удобным для разработчика и увеличив скорость работы в 2 раза.

Зачем вообще нужно «перестраивать» проект?

В многолетних проектах на Laravel/PHP обычно накапливаются следующие проблемы:

  1. «Спагетти»-код

Внутри контроллера: валидация, бизнес-логика, запросы, вызовы сторонних API, события — всё перемешано.

Если измените одну часть, ломаются другие.

  1. Дублирование кода

Одни и те же where-условия, одни и те же join, одни и те же вычисления повторяются в разных контроллерах и сервисах.

Чтобы исправить баг, приходится обходить не 1 место, а 5–6.

  1. Бизнес-правила «разбросаны»

Правила вроде блокировки клиента, отмены заказа, расчёта кэшбэка — не собраны в одном месте.

Новый разработчик постоянно задаёт вопрос: «Где находятся эти бизнес-правила?»

  1. Писать тесты сложно

Так как внутри контроллера находится всё, приходится писать не unit-тесты, а только большие integration/feature-тесты.

Mock и изоляция затруднены.

  1. Скорость работы падает

Повсюду запросы Eloquent: проблема N+1, тяжёлые join, отсутствие кеширования там, где оно необходимо.

С ростом функционала время ответа становится больше.

Чтобы решить эти проблемы, очень полезно структурировать проект заново, основываясь на паттернахRepository + Serviceи принципах чистого кода.