【发布时间】:2016-01-05 15:52:03
【问题描述】:
在“PHP World”中,我能找到的任何 DDD 应用程序(示例)中的基础设施层都有一种奇怪的感觉。
我看到很多例子,当开发人员在基础设施层使用Doctrine2时,使用域实体(来自域层)作为Doctrine2模型,将doc cmets放在上面,或者在config(xml,yml)中提及它们.
例如,Big Blue Book example,这是域实体所在的位置:https://github.com/codeliner/php-ddd-cargo-sample/tree/master/CargoBackend/src/Model,您可以看到它与 Doctrine 高度耦合(查看注释)。是吗?
我觉得这是错误的方式。
我对 DDD 的理解是:
存储库应查询持久层并将结果传递给工厂以正确实例化Aggregate Root 实体(域模型)。这意味着只有 Factory 知道如何实例化特定的 Aggregate Root,此外还有一个所谓的实体生命周期。这意味着并非每次域实体都应通过__construct 实例化(水合)。
如果我有正确的感觉,那么在类似 DDD 的应用程序中正确使用 Doctrine2 的好例子在哪里?
【问题讨论】:
标签: php symfony domain-driven-design onion-architecture