您在 Zend 框架中实现模型的方式有哪些?
我见过基本的class User extends Zend_Db_Table_Abstract
,然后在你的 Controller 中调用它:
$foo = 新用户;
$foo->fetchAll()
但是更复杂的用途呢?文档的快速入门部分提供了这样一个示例,但我仍然觉得我没有得到 Zend Framework 中模型的“最佳使用”示例。有什么有趣的实现吗?
编辑:我应该澄清(回应 CMS 的评论)...我知道做更复杂的选择。我对模型概念的整体方法和其他人如何实现它们的具体示例感兴趣(基本上,手册遗漏的内容和基本操作方法所掩盖的内容)
最佳答案
我在 Zend 工作,在 Zend_Db_Table 组件上做了很多工作。
Zend Framework 没有提供很多关于领域模型模式的“模型”概念的指导。模型没有基类,因为模型封装了特定于您的应用程序的业务逻辑的某些部分。我写了一个blog更详细地了解这个主题。
对数据库的持久化应该是模型的内部实现细节。模型通常使用一个或多个表。将模型视为表的扩展是一种常见但不正确的面向对象设计。换句话说,我们应该说 Model HAS-A Table -- 而不是 Model IS-A Table。
这是一个 IS-A 的例子:
class MyModel extends Zend_Db_Table_Abstract
{
}
这是一个 HAS-A 的例子:
class MyModel // extends nothing
{
protected $some_table;
}
在真实的领域模型中,您可以在 MyModel 的方法中使用 $some_table。
您还可以阅读 Martin Fowler 对 Domain Model 的看法设计模式,以及他对Anemic Domain Model的描述反模式,这是许多开发人员不幸采用 OO 编程的方式。
关于php - Zend 框架中的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/294875/