2010-01-23 68 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