У меня ситуация такого типа, у меня есть контроллеры, например, AuthController с функциями register и login, у меня есть служба под названием AuthService, здесь я реализую функции, в которых у меня есть вся логика и связь с базой данных. все, что я делаю в контроллере, это $ auth_service-> register ($ request), а затем служба аутентификации делает все, возвращает объект ответа, а затем в контроллере я возвращаю этот объект как Json. поэтому у меня нет красноречивых функций в контроллере, нет бизнес-логики, только 3-4 строки кода. Это хорошая практика? например, если мне нужна только функция Modell: all () в контроллере, я должен использовать сервисную функцию даже для этого небольшого куска кода, в противном случае у меня будет структура, в которой я иногда использую сервисы, а иногда нет. Также, когда я внедряю класс обслуживания в контроллер, я также внедряю все полезные модели (иногда другие сервисы) в этот сервис, если в одном контроллере иногда я использую сервис, а иногда работаю с моделями напрямую, то получается, что я внедряю модель в сервис и в контроллере (впрыскивание одной и той же модели два раза). так что я должен продолжать делать это и использовать сервис для каждого контроллера каждой функции? Я имею в виду, какой путь будет лучше и почему?
это функция регистра моего контроллера аутентификации:
protected $auth_service;
public function __construct(AuthService $auth_service){
$this->auth_service = $auth_service;
}
public function registerUser(UserRegisterRequest $request){
$registerUser = $this->auth_service->registerUser($request);
return response()->json($registerUser, 200);
}
и это контроллер языка:
protected $language;
public function __construct(Language $language){
$this->language = $language;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$languages = $this->language->getAllLanguage();
return response()->json(['data'=>$languages], 200);
}
во втором примере я использую функцию модели непосредственно из контроллера, но если я выберу этот первый пример лучше, я должен сделать языковой сервис и использовать его в методе индекса языкового контроллера, даже если он довольно прост и не требует каких-либо упрощений, так что же делать ты думаешь?
Хорошо, если вы создаете сервис — тогда я бы сказал, что он больше не MVC, потому что у вас есть один дополнительный слой. Я бы сказал, что правильным способом было бы держать эти строки в контроллере.
Например, среда Symfony больше не является MVC, потому что создание сервисов, которые взаимодействуют с базой данных, а затем внедряет их в контроллер, является традиционным способом работы на данный момент.
Когда эти услуги могут быть полезными?
Хорошо, учтите, что у вас есть несколько контроллеров, для которых вы хотите поделиться бизнес-логикой. Затем вы просто создаете сервис и внедряете этот сервис в несколько контроллеров.
Как вы можете повторно использовать логику с использованием чистого MVC?
Ну, вы можете просто вызвать метод контроллера из другого метода контроллера.
Что я предпочитаю?
Поскольку я работаю в основном с Symfony, мне действительно нравится этот дополнительный уровень обслуживания, потому что
Других решений пока нет …