繁体   English   中英

对于PHP中的DDD,我们如何在不是根的聚合中完全保护实体上的方法?

[英]For DDD in PHP, how do we exactly protect methods on an entity in an aggregate that is not the root?

对于PHP中的DDD,我们如何在不是根的聚合中完全保护实体上的方法? 我们如何保护它们避免在聚合外部使用(因为仅应使用聚合根上的方法)?

奖励:而且,重复实体是否正常? 我的意思是,在哪里说一个相同的产品实体类在两个单独的集合中被发现是子代? 这两个产品类别在使用“产品”的域概念时具有相同的行为/规则。 但是我重复了该类,因为同样,不应在其聚合之外访问实体。

您不会公开那些实体,基本上您的AR不能返回它的实例。 但实际上,我并没有这个问题,主要是因为我的汇总是由1个实体+一堆价值对象构成的,占99%。

奖励:您的汇总定义概念。 实体和值对象只是具有业务意义的对象的技术术语,因此它们是概念的实现。 产品的概念在每个受限制的上下文中应该是唯一的。

当另一个概念以某种方式引用(并不意味着它包含)产品时,它实际上处理的是产品ID,这又是技术实施的更多细节。 从业务角度来看,每个上下文都有一个独特的概念(汇总)。

由于聚合应包含定义概念的对象,因此在聚合内部“使用”重复的实体表示不正确建模的99.99%。

集合不仅是一组实体,其中一个实体充当其他实体的容器。 那是100%的错误。 聚集包括正确定义业务概念所需的所有对象。 聚合根绝不是容器,它是维护聚合一致性的对象(这就是为什么您只能使用它的原因)。

对于抱着孩子的父母,有数据库和存储库模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM