私は、サービスを大量に使用する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);
}
私は、コントローラは、単に仕事を委譲すべきであると感じているため、私は、より良い第二のアプローチが好きサービス層は重い持ち上げをしなければならない。
私はUser
オブジェクトを作成する必要がある複数のコントローラがあるため、コードを繰り返さないため、DRYの原則にも従っているようです。ユニットテストを書く場合も同じです。すべての引数をサービスオブジェクトに渡すだけです。
しかし私は最初の方法も使用しているのを見てきました。私には見えないという利点があるのでしょうか?