1
我正在研究大量使用服务的MVC应用程序。我的问题是,在创建实体时,我应该从控制器内还是从服务内部填充其属性?SOA + 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);
}
我喜欢第二个方法更好,因为我觉得自己的控制器应直接委托工作出来,服务层应该做大量的工作。
它似乎也遵循DRY原则,因为如果我有多个控制器需要创建User
对象,我不会重复任何代码。编写单元测试也是如此 - 我可以简单地将所有参数传递给服务对象。
但我也看到了第一种方法,我想知道是否有一些优势,我没有看到。