@KBBS

Какие именно данные передавать в сервисный слой приложения?

Приветствую!
Разрабатываем с коллегами API на Laravel.
Дано:
  1. Вся валидация через FormRequests
  2. Основная бизнес логика находится в сервисном слое
  3. Сервисы должны получать данные из реквеста

Грубо говоря, в методе контроллера мы просто вызываем соответствующий метод сервиса. А вся логика уже там.
Но возник холивар на тему: а что же именно нужно передавать в сервис.
Передавать инстанс реквеста, а извлечением данных из реквеста уже должен заниматься сервис?
Или же данные из реквеста должны извлекаться в контроллере и передаваться в метод сервиса?

Предположим, если мы хотим залогинить пользователя, используя почту и пароль, какой из вариантов будет более правильным? Просто для примера.
В контроллере:
$result = $this->userService->login($request); // Первый вариант.

$credentials = $request->only(['email', 'password']);
$result = $this->userService->login($credentials); // Второй вариант.

Скорее всего, на этот вопрос нет однозначно правильного ответа.
Просто интересует мнение общественности. Как делаете вы, и как считаете более правильно. И почему.

Спасибо.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
Как только вы с коллегами попробуете использовать свой сервис в консольной команде, где реквест хоть и есть, но толку от него нет, то вопрос «что передавать в сервис — реквест или что-то иное» сам собой отпадёт.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы