没有二传手的学说
Doctrine without setters
我一直在阅读有关领域驱动设计的内容,并且实体不应该有 setter。在构造函数中传递属性是有意义的,因此对象是实体的。有没有办法在这种实践中使用 Doctrine ORM?
class User
{
private $firstname;
public function __construct($firstname)
{
$this->firstname = $firstname;
}
}
Doctrine 如何处理这种设置?有什么缺点吗?
你会遇到很多缺点,比如:
- ID在persist后可用=>解决方案:在实体构造器中使用object ids或UUID
- Symfony 表单喜欢使用 setters => 解决方案:使用构造函数(像你一样)和 CQRS
- 值对象(如在其构造函数中验证电子邮件的电子邮件对象)=> 解决方案:使用可嵌入对象
我一直在阅读有关领域驱动设计的内容,并且实体不应该有 setter。在构造函数中传递属性是有意义的,因此对象是实体的。有没有办法在这种实践中使用 Doctrine ORM?
class User
{
private $firstname;
public function __construct($firstname)
{
$this->firstname = $firstname;
}
}
Doctrine 如何处理这种设置?有什么缺点吗?
你会遇到很多缺点,比如:
- ID在persist后可用=>解决方案:在实体构造器中使用object ids或UUID
- Symfony 表单喜欢使用 setters => 解决方案:使用构造函数(像你一样)和 CQRS
- 值对象(如在其构造函数中验证电子邮件的电子邮件对象)=> 解决方案:使用可嵌入对象