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

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

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

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽