Я работаю над приложением MVC, которое интенсивно использует Сервисы.Мой вопрос заключается в том, чтобы при создании объекта заполнять его свойства из контроллера или из службы?
Пример 1 - Заполнение из контроллера:
// MyController.php
function someAction() {
$name = $_POST['name'];
$gender = $_POST['gender'];
$user = new User();
$user->setName($name);
$user->setGender($gender);
$userService->createUser($user);
}
// UserService.php
function createUser($user) {
$this->saveToDb($user);
}
Пример 2- Заполнение изнутри службы:
// MyController.php
function someAction() {
$name = $_POST['name'];
$gender = $_POST['gender'];
$userService->createUser($name, $gender);
}
// UserService.php
function createUser($name, $gender) {
$user = new User();
$user->setName($name);
$user->setGender($gender);
$this->saveToDb($user);
}
Мне больше нравится второй подход, потому что я считаю, что контроллер должен просто делегировать работу, а уровень обслуживания должен выполнять тяжелую работу.
Этотакже, похоже, следует принципу СУХО, потому что, если у меня есть несколько контроллеров, которым нужно создавать объекты User
, я не буду повторять код.То же самое касается написания модульных тестов - я могу просто передать все аргументы объекту службы.
Но я видел и первый использованный метод, и мне интересно, есть ли какое-то преимущество в этом, чтоЯ не вижу.