PHP存储库应如何处理添加/删除/保存/删除实体?

时间:2014-06-10 16:43:02

标签: domain-driven-design repository-pattern ddd-repositories

由于存在一些混淆,我在实现存储库模式时遇到了一些麻烦。

据我现在所知,Repository的行为应该像内存中的对象集合,所以如果我这样说:

$users = new UserRepository(new UserMapper);
$users->findAll();

Users存储库将加载并返回User实体数组。现在我可以使用它们来读取数据,或者可以更新任何特定实体上的数据,并在Repository上调用save()方法,该方法将利用Mapper将加载的实体保存回数据源,并使用更新已被应用。

我想知道的是,如果这是正确的理解。

add()方法是应该将实体直接添加到数据源,还是仅添加到存储库中的集合?

同样适用于remove();该方法是应该从数据源中删除实体,还是仅从存储库中删除。

混淆源于这样一个事实:我在教程中看到的一些实现同时包含add()/ remove()方法以及save()/ delete()方法。这是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

我现在使用DDD技术开发大约6个月并始终使用保存和删除方法,保存应该将数据保存到持久层,删除应该从持久层中删除。

如上所述,没有理由不将它添加到你的收藏中。

请查看dddinphp Google小组,这是一个纯粹针对这些问题的活跃社区