php - Zend 框架中的模型

标签 php model-view-controller zend-framework model

您在 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/

相关文章:

javascript - 如何从 sails.js 上的不同操作中获取返回的对象?

php - Zend DB 如何管理数据库连接

php - 用于 PHP/Android 的 Xliff 工具

javascript - 如果选中复选框,则在 Facebook 墙上发布消息

php - 为什么这个 PDO 语句会默默地失败?

php - 在 php 中获取内存缓存项的过期时间?

php - Zend_Cache - "Datas must be string or set automatic_serialization = true"

php - Yii url 区分大小写

asp.net-mvc - ASP.NET MVC 动态生成图像 URL

authentication - auth0 的 userInfo 中缺少 user_metadata