Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Domain driven design PHP存储库应该如何处理添加/删除/保存/删除实体?_Domain Driven Design_Repository Pattern_Ddd Repositories - Fatal编程技术网

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

Domain driven design PHP存储库应该如何处理添加/删除/保存/删除实体?,domain-driven-design,repository-pattern,ddd-repositories,Domain Driven Design,Repository Pattern,Ddd Repositories,由于一些混乱,我在实现存储库模式时遇到了一些问题 就我现在所知,存储库的行为应该类似于内存中的对象集合,因此如果我说: $users = new UserRepository(new UserMapper); $users->findAll(); 用户存储库将加载并返回一组用户实体。现在,我可以使用它们来读取数据,也可以更新任何特定实体上的数据,并在存储库上调用save()方法,该方法将利用映射器将加载的实体保存回数据源,并应用更新 我想知道的是,这是否是一个正确的理解 add()方法应

由于一些混乱,我在实现存储库模式时遇到了一些问题

就我现在所知,存储库的行为应该类似于内存中的对象集合,因此如果我说:

$users = new UserRepository(new UserMapper);
$users->findAll();
用户存储库将加载并返回一组用户实体。现在,我可以使用它们来读取数据,也可以更新任何特定实体上的数据,并在存储库上调用save()方法,该方法将利用映射器将加载的实体保存回数据源,并应用更新

我想知道的是,这是否是一个正确的理解

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

对于remove()也是如此;此方法是从数据源中删除实体,还是仅从存储库中删除实体


混淆源于我在教程中看到的一些实现既有add()/remove()方法,也有save()/delete()方法。这是正确的方法吗?

我已经使用DDD技术开发了大约6个月了,并且始终使用保存和删除方法,保存应该将数据持久化到持久化层,删除应该从持久化层删除

综上所述,没有理由不将其添加到您的收藏中

p、 让我们看看谷歌集团,有一个活跃的社区专门针对这些问题

IDDD(实现域驱动设计)有一整章都是关于存储库的,特别考虑了存储库的接口和背后的合理因素。我强烈建议你阅读这一章,因为它直接适用于你的问题。