【发布时间】:2011-09-10 23:22:55
【问题描述】:
我正在寻找一种从 Doctrine 2 中的域对象返回不可变集合的方法。让我们从 doc 中的这个示例开始:
class User
{
// ...
public function getGroups()
{
return $this->groups;
}
}
// ...
$user = new User();
$user->getGroups()->add($group);
从DDD 的角度来看,如果User 是聚合根,那么我们更愿意:
$user = new User();
$user->addGroup($group);
但是,如果我们确实也需要 getGroups() 方法,那么理想情况下我们不希望返回对集合的内部引用,因为这可能会让某人绕过 addGroup() 方法。
除了创建自定义的不可变集合代理之外,是否有返回不可变集合的内置方法?比如……
public function getGroups()
{
return new ImmutableCollection($this->groups);
}
【问题讨论】:
标签: orm collections doctrine domain-driven-design doctrine-orm