1
61
我为Zend工作,在Zend_Db_表组件上做了很多工作。 Zend框架没有就领域模型模式的“模型”概念提供很多指导。模型没有基类,因为模型封装了特定于应用程序的部分业务逻辑。我写了一封信 blog 更详细地讨论这个问题。 对数据库的持久性应该是模型的内部实现细节。模型通常 使用 一张或多张桌子。将模型作为表的扩展来考虑是一种常见但不合适的面向对象设计。换句话说,我们应该说模型有一个表,而不是模型是一个表。
这是HAS-A的一个示例:
在实际域模型中,您将 使用 $MyModel方法中的一些表。 你也可以阅读马丁·福勒的《对未来的看法》 Domain Model Anemic Domain Model |
2
23
我个人认为这两个都是子类
有很多方法可以做到这一点。不要认为这是唯一的一个,但我试图遵循采埃孚的设计意图。(以下是我的更多信息 thoughts and links on the subject )这种方法确实有点重,但我觉得它让控制器专注于处理输入并与视图协调;让模型做特定于应用程序的工作。 |
3
7
here 对于一个允许您在某种程度上结合“Model”类和Zend_Db_表的hack。 最重要的一点是,当您在控制器中直接使用Zend_Db_表时,您最终会在多个位置执行相同的操作。如果你必须改变某些逻辑,你必须在多个地方做出改变。不好的。我的第一个专业项目就是这样完成的,因为我是公司里必须学习如何使用采埃孚的人,现在真是一团糟。 我还倾向于将助手函数写入类中,以进行复杂的获取。像$table这样的东西->doNameFetchAll()或$table->doOrderFetchAll()。 |
4
7
我一直在对采埃孚的模型进行研究,发现了Matthew Weier O'Phinney的一系列有趣的文章,非常值得一看:
|
5
5
一个模型 . 如果我从RSS提要或SOAP服务获取数据,或者从FS读取文件,该怎么办? 不扩展任何内容 . 我将要编写一个使用其他模型方法的模型。 |
6
3
对于模型部分,跳过ZF,有更好的解决方案。采埃孚“MVC”中的“M”几乎不存在。阅读他们的文档时,他们根本没有提到模型——这是一件好事,这意味着你可以使用任何你想要的东西,而无需编写大量的适配器代码。 Doctrine 取而代之的是模型。它正迅速成为PHP事实上的ORM。 |
7
1
您可以执行更复杂的查询,检查
Advanced usage
|
8
1
您可以扩展Zend_Db_Table_抽象类并向其添加一些有用的方法。例如,您可以将changePassword()方法添加到用户类中并操作其数据。或者,您可以更改类的默认_-toString()方法,这样您就有了一个自定义的_-toString()方法,可以用格式良好的字符串返回用户的全部联系信息(姓名、地址、电话号码)。在构造函数中,您可以将数据填充到对象的属性中。然后像这样使用它们:
|
9
1
数据库实体不是模型组件的唯一类型。因此,谈论模型(复数形式)是没有意义的——您的应用程序
一
我建议你去拿这本书 Domain Driven Design 作者Eric Evans,在解释如何构建对象模型方面做得很好。 |
10
1
我使用Propel 1.3而不是Zend_Db_表。 它可以检查您的数据库并自动生成所有模型。
第1级:基本模型和;BasePeer:每次重新生成ORM时,这些都会被覆盖。i、 e.BaseUser.php&BaseUserPeer.php 第二级:StubModel&StubPeer:这些不会被覆盖。它们是你定制的。i、 e.User.php&UserPeer.php 类型2:对等-用于查询。这些是静态对象。i、 e.UserPeer.php
要查找所有德里克:
|
11
1
http://zfsite.andreinikolov.com/2008/08/zend_db_table-time-overhead-about-25-percents/ Zend_表原则上很好,但会产生一些性能开销(没有缓存)。。。 |
Ali Özen · Laravel合并逻辑 6 年前 |
Dark Patate · QML:重新加载模型 6 年前 |
Wei Kang · 未找到Laravel eloquent模型类 6 年前 |
Ajay · 表格标题在UI5应用程序中不可见 6 年前 |
Romeo · KeystoneJS复数选项在AdminUI中不起作用 6 年前 |
Stacky · 默认的“SpringWeb”模型属性用法和文档 6 年前 |