Приветствую!
Разрабатываем с коллегами API на Laravel.
Дано:
- Вся валидация через FormRequests
- Основная бизнес логика находится в сервисном слое
- Сервисы должны получать данные из реквеста
Грубо говоря, в методе контроллера мы просто вызываем соответствующий метод сервиса. А вся логика уже там.
Но возник холивар на тему: а что же именно нужно передавать в сервис.
Передавать инстанс реквеста, а извлечением данных из реквеста уже должен заниматься сервис?
Или же данные из реквеста должны извлекаться в контроллере и передаваться в метод сервиса?
Предположим, если мы хотим залогинить пользователя, используя почту и пароль, какой из вариантов будет более правильным? Просто для примера.
В контроллере:
$result = $this->userService->login($request); // Первый вариант.
$credentials = $request->only(['email', 'password']);
$result = $this->userService->login($credentials); // Второй вариант.
Скорее всего, на этот вопрос нет однозначно правильного ответа.
Просто интересует мнение общественности. Как делаете вы, и как считаете более правильно. И почему.
Спасибо.