Data Mapper + Observer模式

Jac*_*ght 7 php datamapper observer-pattern

我正在用PHP构建应用程序,我正在使用数据映射器模式进行数据库访问.我正在考虑使用Observer模式让我的所有映射器观察它们创建的实体,这样它们就可以自动将任何更改保存回数据库而无需手动解析它们.

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

我通常使用一些在层次结构中链接在一起的对象,并且目前必须手动将每个对象解析为它的映射器,这是相当繁琐的,所以只是尝试提出一个更好的解决方案.

谢谢,杰克

Mic*_*art 3

对我来说绝对听起来是个好主意。您正在做的事情类似于工作单元模式,旨在跟踪您对映射对象所做的更改,并在完成后提交(通常作为单个事务)。

我相信像OutletRepose这样的项目可以在 PHP 中为您提供这种功能,并减轻一些映射的痛苦,但我个人还没有使用过它们。

顺便说一句,如果您希望沿着领域驱动设计路径前进并受益于它带来的干净隔离,那么听起来您的对象层次结构可能会受益于被视为聚合。

--

编辑:看起来eZ Components也有一个功能相当齐全的 PHP ORM解决方案,Doctrine 2.0也正在以这种方式发展。

--

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