2010-01-23 66 views
4

假设我在数据库中有两个表:项目和用户。我创建了两个模型,扩展了Zend_Db_Table_Abstract:Model_DbTable_UsersModel_DbTable_Projectszend模型架构

现在,在Model_DbTable_Users类中创建Model_DbTable_Projects实例是否是一种很好的模式?换句话说:在这个模型中放置任何逻辑都可以,或者我应该创建另一个类,它使用Model_DbTable_UsersModel_DbTable_Projects

我使用将模型中的所有逻辑放在Zend_Db_Table_Abstract中,但是在大型项目中它可能使代码非常不洁。所以,你可以给我任何关于模型建筑的建议(文章上的链接会很棒!)。

回答

9

我是通过1.0版Zend Framework项目的项目负责人。我的贡献主要在Zend_Db组件中。

我经常advise人们应该使用Domain Model模式并避免Anemic Domain Model反模式。请记住,表不是一个模型。

Your Model是封装业务逻辑的代码的类(不扩展基类)。模型和表之间的关系不是IS-A,而是HAS-A(或者HAS-MANY)。该模型将数据库持久性视为实现细节。模型的使用者不应该知道您的数据库结构(这可以让您在不更改模型接口的情况下更改数据库结构)。

我基本上重复了我给Models in the Zend Framework的答案。

下面是一些更多阅读:

+0

谢谢你的答案。有Zend框架的领域模型的例子吗? – mik 2010-01-25 11:41:12

+0

请参阅上面的其他链接。 – 2010-01-25 14:37:06