laravel 5 — максимальное количество репозиториев в PHP

поэтому я разрабатываю веб-приложение на php с использованием фреймворка Laravel. У меня есть 12 моделей и 1 контроллер, и 12 репозиториев, связанных с моделями. В каждом репозитории я пишу некоторые функции с запросами, чтобы они не повторялись в контроллере. Я пытаюсь внедрить репозитории в конструктор контроллера, и не знаю, сколько их слишком много?

Я слышал, его 1 или 2 обычно, но у меня их 12 до сих пор.

контроллер:

class PagesController extends Controller   {
protected $review;
protected $organization;
protected $user;
protected $city;
protected $buyer;
protected $employee;

public function __construct(ReviewRepository $review, OrganizationRepository $organization, UserRepository $user, CityRepository $city, BuyerRepository $buyer, EmployeeRepository $employee) { //here are just 6 repositories, I have much more
$this->employee = $employee;
$this->city = $city;
$this->buyer = $buyer;
$this->user = $user;
$this->organization = $organization;
$this->review = $review;
}

Repository:

class ReviewRepository {

protected $review;

function __construct(Review $review)
{
$this->review = $review;
}
}

-1

Решение

Как было сказано в комментарии, слишком много субъективно. Однако, если вы обнаружите, что задаете этот вопрос, это, вероятно, означает, что есть что-то, что стоит переосмыслить. Это снова очень субъективно.

С моей точки зрения и моего понимания MVC, весь смысл репозиториев — это разделение интересов. Возможно, ваш контроллер отвечает за большее, чем должно быть?

В приложении, которое мы создали, мы решили использовать репозитории в качестве контейнеров для бизнес-логики. Это не традиционный шаблон, но вы обнаружите, что любой шаблон дизайна в определенных обстоятельствах часто сгибается или ломается.

Вопрос в том: PageController действительно нужна видимость на ReviewsRepository, BuyerRepository, CityRepository, так далее? Или вы могли бы заключить эту логику в PageRepository класс, который будет отвечать за предоставление надлежащих данных, которые ваш PageController требуется? Кроме того, вы можете переместить различные связанные репозитории в свои собственные родительские репозитории, которые абстрагируют более сложные части этого для дальнейшего уменьшения ваших зависимостей.

Так что мораль этой истории в том, что когда я спрашиваю себя: «Это слишком много?», Это обычно означает, что мне нужно взглянуть на абстрагирование. Это не значит, что нужно, но шаг назад никогда не повредит.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]