假设我的数据库中有两个表:项目和用户。我创建了两个扩展 Zend_Db_Table_Abstract 的模型:Model_DbTable_Users
and Model_DbTable_Projects
.
现在,创建一个实例是一个好的模式吗?Model_DbTable_Projects
在 - 的里面Model_DbTable_Users
班级 ?换句话说:可以在这个模型中放入任何逻辑吗?或者我应该创建另一个使用它的类Model_DbTable_Users
and Model_DbTable_Projects
?
我过去常常将所有逻辑放在扩展 Zend_Db_Table_Abstract 的模型中,但在大型项目中,它会使代码非常不干净。那么,您能给我有关模型架构的任何建议吗(文章上的链接非常棒!)。
我是 Zend Framework 项目 1.0 版本的项目负责人。我的贡献主要是 Zend_Db 组件。
我经常advise http://karwin.blogspot.com/2008/05/activerecord-does-not-suck.html人们应该使用领域模型 http://www.infoq.com/minibooks/domain-driven-design-quickly模式并避免贫血域模型 http://www.martinfowler.com/bliki/AnemicDomainModel.html反模式。请记住表不是模型。
您的模型是封装业务逻辑的代码的类(不扩展基类)。模型和表之间的关系不是 IS-A,而是 HAS-A(或 HAS-MANY)。该模型将数据库持久性视为实现细节。模型的使用者不应该知道您的数据库结构(这允许您更改数据库结构而不更改模型的接口)。
我基本上是在重复我给出的答案Zend 框架中的模型 https://stackoverflow.com/questions/294875/models-in-the-zend-framework/295051#295051.
这里还有一些阅读内容:
- http://weierophinney.net/matthew/archives/202-Model-Infrastruct.html http://weierophinney.net/matthew/archives/202-Model-Infrastructure.html
- http://blog.astrumfutura.com/archives/373-The-M-in-MVC-Why-Models-are-Misunderstood-and-Unappreciated.html http://blog.astrumfutura.com/archives/373-The-M-in-MVC-Why-Models-are-Misunderstood-and-Unappreciated.html
- http://n4.nabble.com/Another-Model-Design-Thread-td670076.html http://n4.nabble.com/Another-Model-Design-Thread-td670076.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)