由于存在一些混淆,我在实现存储库模式时遇到了一些麻烦。
据我现在所知,Repository的行为应该像内存中的对象集合,所以如果我这样说:
$users = new UserRepository(new UserMapper);
$users->findAll();
Users存储库将加载并返回User实体数组。现在我可以使用它们来读取数据,或者可以更新任何特定实体上的数据,并在Repository上调用save()方法,该方法将利用Mapper将加载的实体保存回数据源,并使用更新已被应用。
我想知道的是,如果这是正确的理解。
add()方法是应该将实体直接添加到数据源,还是仅添加到存储库中的集合?
同样适用于remove();该方法是应该从数据源中删除实体,还是仅从存储库中删除。
混淆源于这样一个事实:我在教程中看到的一些实现同时包含add()/ remove()方法以及save()/ delete()方法。这是正确的方法吗?
答案 0 :(得分:0)
我现在使用DDD技术开发大约6个月并始终使用保存和删除方法,保存应该将数据保存到持久层,删除应该从持久层中删除。
如上所述,没有理由不将它添加到你的收藏中。
请查看dddinphp Google小组,这是一个纯粹针对这些问题的活跃社区