Задать вопрос
@the5x

Interface для Repository и Service, как правильно сделать?

Пишу проект на Laravel и использую паттерн Repository, где собственно отдельно работаю с ORM и отдельно с данными в Service. Например UserRepositiry и UserService.

Например CRUD, я хотел бы завести Interface и использовать его и в UserRepository и в UserService. Например UserContract. Правильный ли это подход. Если нет, то подcкажите, как правильно, ведь в конструктор контроллера я хочу передавать UserContact $userContract, но и не хочу разделять интерефейсы, на UserServiceContract и UserRepositoryContract, где часть методов будет похожа. Как правильно сделать?
  • Вопрос задан
  • 163 просмотра
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
AmdY
@AmdY
PHP и прочие вебштучки
Вы плодите лишние сущности, которые к тому же занимаются дублированием.
Ваш UserService должен принимать UserRepository и работать с данными через него.
Так же и контроллер должен работать с UserService и не работать напрямую с UserRepository.
Простая цепочка UserModel -> UserRepository -> UserService -> UserController. Если вы начнёте переставлять звенья, то цепочка запутается и будет хуже чем прямая работа с UserModel.

Интрефейсы я упустил, в 99% в таком кейсе они не имеют смысл, т.к. в проекте у вас будет одна реализация каждой сущности. Плодить интерфейсы ради интерфейсов не стоит. Так же как и репозитории ради репозиториев. Всегда задавайте себе вопрос - зачем я пишу этот код, зачем ввожу это слой, это реально мне надо?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы