假设数据库中有两个表: projects和users。我创建了两个扩展Zend_Db_Table_Abstract的模型:Model_DbTable_Users和Model_DbTable_Projects。
现在,在Model_DbTable_Users类中创建一个Model_DbTable_Projects实例是一个好的模式吗?换句话说:是否可以在这个模型中加入任何逻辑,或者我应该创建另一个使用Model_DbTable_Users和Model_DbTable_Projects的类
我习惯于把所有的逻辑放在扩展Zend_Db_Table_Abstract的模型中,但在大型项目中,它会使代码变得非常不干净。那么,你能给我一些关于模型架构的建议吗(文章的链接就更好了!)
发布于 2010-01-24 10:20:38
我是Zend Framework项目的项目负责人,一直到1.0版。我的贡献主要集中在Zend_Db组件上。
我经常advise人们应该使用Domain Model模式,避免使用Anemic Domain Model反模式。记住,a Table不是一个模型。
您的Model是封装业务逻辑的代码的类(不扩展基类)。Model和Table之间的关系不是-A,而是HAS-A (或HAS-Model)。该模型将数据库持久性视为实现细节。Model的使用者应该对您的数据库结构一无所知(这允许您在不更改Model接口的情况下更改数据库结构)。
我基本上是在重复我给Models in the Zend Framework的答案。
下面是一些更多的阅读:
https://stackoverflow.com/questions/2122850
复制相似问题