【问题标题】:Doctrine without setters没有二传手的教义
【发布时间】:2016-03-13 00:41:42
【问题描述】:

我一直在阅读有关领域驱动设计的内容,并且实体不应该有设置器。在构造函数中传递属性是有意义的,因此对象是实心的。有没有办法在这种做法中使用 Doctrine ORM?

class User
{
    private $firstname;

    public function __construct($firstname)
    {
        $this->firstname = $firstname;
    }
}

Doctrine 如何处理这种设置?有什么缺点吗?

【问题讨论】:

  • 它会工作得很好。 Doctrine 在对数据库中的对象进行水合时不使用构造函数,因此不会发生冲突。唯一的问题是如何从表单输入中更新实体。
  • @Cerad,您知道如何在没有设置器的情况下更新现有实体吗?我尝试了em->persist(),但它不起作用(id 约束)并且em->merge() 已被弃用。
  • @Kwadz 过去的爆炸。不确定你的问题是什么。最好打开一个新问题。这个特定的问题犯了一个常见的错误,即 DDD 实体与 Doctrine 实体相同。它们实际上是两种截然不同的生物。如果您有更新 Doctrine 实体的冲动,请使用 setter 或使用公共属性。

标签: php doctrine-orm domain-driven-design


【解决方案1】:

你会遇到很多缺点,比如:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多