【发布时间】:2015-04-28 22:55:35
【问题描述】:
我对使用 DDD 方法的 PHP 中的构造函数是什么样子感到困惑。这是我目前所拥有的:
实体
class People {
// Fields
private $id;
private $first_name; // required
private $middle_name;
private $last_name; // required
private $phone; // required (or mobile_phone required)
private $mobile_phone;
private $email; // required
private $alt_email;
private $something_else; // required
public function __construct($fields){
// Set some properties
$this->setFromArray($fields);
// Don't instantiate a new entity object in an invalid state
// (ie. determines if required fields are given)
if(!$this->isValid()){
throw new Exception("Can't create person");
}
}
// some getters and setters...
// some other domain methods so entity is not anemic
...
存储库
class PeopleRepository { // <-- Should probably be an interface
public function get($id){
...
}
public function save(People $people){
// Will INSERT or UPDATE based on if an ID is set in $people
}
简单示例
// a very very simple example
$peopleRepo = new PeopleRepository();
$people = new People($_POST);
$peopleRepo->save($people);
我不想使用任何 ORM。我这样做的方式是否高于 DDD 中实体构造函数的正确方法?请在 PHP 中解释并举例说明实体构造函数在 DDD 中的外观(我很难找到好的示例)。
【问题讨论】:
标签: php constructor entity domain-driven-design ddd-repositories