【发布时间】:2011-02-18 18:30:03
【问题描述】:
我知道领域模型和数据映射器是 OOP 势利小人的选择(以互补的方式使用“势利小人”,Martin Fowler 称自己为其中之一) - 然而,即使是 Fowler says in POEAA that
“Active Record 是不太复杂的领域逻辑的不错选择......”
我有一个简单的产品和发票域模型,没有太多要建模的表/对象/概念,而且关系也没有那么复杂。那么,这对 Active Record 来说是一个很好的用例吗?
Fowler 还指出 Active Record 类似于 Row Data Gateway,不同之处在于 Active Record 具有域逻辑。
假设这是一个有效的 Active Record 用例,并且由于 Zend 提供了 Row Data Gateway,扩展这些对象的智能解决方案(而不是简单地添加表名)似乎是使用以下方法创建 Active Record 对象的好方法Zend 框架。确实,that concept is discussed in this SO answer。 这是在 Zend 框架内实现 Active Record 的可接受方式吗?
当然,这个问题最受欢迎的答案是 one by Bill Karwin(他曾参与 Zend 的 Db 实现),建议 不要 以这种方式使用 Zend_Db_Table 或 Zend_Db_Row(至少我就是这样阅读)。
如果有问题的域模型变得更加复杂,我完全接受想要迁移到 Data Mapper 解决方案。我查看了各种 ORM/DataMapper(不仅仅是所讨论的域模型,最近还阅读了有关 OOP 设计模式的更多信息),对于某些事情来说,它们似乎真的太多了。
【问题讨论】:
标签: php oop zend-framework activerecord datamapper