【问题标题】:Data Mapper + Observer pattern数据映射器 + 观察者模式
【发布时间】:2010-10-05 07:19:54
【问题描述】:

我正在用 PHP 构建一个应用程序,并且我正在使用数据映射器模式来访问我的数据库。我正在考虑使用观察者模式让我的所有映射器观察他们创建的实体,以便他们可以自动将任何更改保存回数据库,而无需我手动解析它们。

我只是想知道这是个好主意,还是不好的做法等等?

我通常使用一些在层次结构中链接在一起的对象,目前必须手动将每个对象解析到它的映射器,这相当乏味,所以只是想提出一个更好的解决方案。

谢谢, 杰克

【问题讨论】:

  • 好问题,希望你能得到一些体面的答案。

标签: php datamapper observer-pattern


【解决方案1】:

对我来说绝对是个好主意。您所做的与Unit Of Work 模式类似,该模式旨在跟踪您对映射对象所做的更改并在完成后提交(通常作为单个事务)。

我相信像 OutletRepose 这样的项目在 PHP 中为您提供了这一点,并减轻了一些映射痛苦,但我没有亲自使用它们。

顺便说一句,如果您希望沿着 Domain Driven Design 路径走下去并受益于它带来的干净隔离,那么您的对象层次结构可能会受益于被视为 Aggregates

--

编辑:看起来eZ Components 也有一个功能相当完整的 PHP ORM 解决方案,Doctrine 2.0 也在以这种方式形成。

--

编辑 2:对于您正在讨论的问题,我不会查看 Propel 或 Creole。 Creole 不是 ORM,而更像是一个类似于 PDO 的 DB 抽象层——该项目现在正式“死亡”。 Propel 使用 ActiveRecord 模式,而不是 DataMapper 模式,因此您的域对象最终会承担更多的持久性责任,并且 AFAIK 它不包括工作单元设施。

【讨论】:

  • 您好,感谢您提供的信息,我一定会调查您提到的项目。
【解决方案2】:

如果您正在研究 ORM,请查看 PropelCreole

【讨论】:

    猜你喜欢
    • 2019-02-12
    • 2016-02-20
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多