【问题标题】:PHP How should Repositories handle adding/removing/saving/deleting entities?PHP 存储库应该如何处理添加/删除/保存/删除实体?
【发布时间】:2014-06-10 16:43:02
【问题描述】:

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

据我所知,存储库的行为应该类似于内存中的对象集合,所以如果我说:

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

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

我想知道这是否是正确的理解。

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

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

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

【问题讨论】:

  • IDDD(Implementing Domain Driven Design)有一整章是关于repository的,特别考虑repositories的接口和背后的合理性。我强烈建议您阅读该章节,因为它直接适用于您的问题。

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


【解决方案1】:

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

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

p.s 查看dddinphp Google 群组,这里有一个专门针对这些问题的活跃社区

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 2018-07-09
    • 2015-08-24
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多