ZF 1.x的是不是真的模塊化的,我認爲在ZF 1.x的模塊是一個有點用詞不當。在我看來,它們更像域名庫。這就是說, 我看着這樣的代碼分離(純粹的意見)。
任何代碼,我希望在我放入庫的另一個項目中重用或可重用。例如。查看幫助者,動作助手,抽象模型類,基礎模型,插件等...
任何特定於應用程序的代碼,將在我放入應用程序級目錄的應用程序中普遍使用。這是像具體的數據映射器,DbTable模型(我不使用Doctrine),形式和佈局的東西...
任何代碼,特別是屬於一個模塊(域),不會或不能在其他地方使用我把模塊級別的目錄。這包括諸如特殊視圖和動作助手之類的東西,其中一種形式,並且大部分是我放置我的域(實體)模型的地方。
爲了說明這一點,我將介紹一個例子(個人命名空間略):
我有一個名爲音樂在我的應用模塊,該模塊有一個名爲「音樂」數據庫表。
所以這些是我可能必須在我的模塊中使用此Db表的文件。
//The DbTable model
application
/models
/DbTable
/Music.php //extends Zend_Db_Table_Abstract
要使用DBTABLE模式,我建立使用2檔
//Base mapper class
library
/Application
/Model
/Mapper.php
//The concrete mapper
application
/modules
/models
/MusicMapper.php //extends Namespace_Application_Model_Mapper
,並使用該映射器我本來它是由2個文件的域模型映射器,基實體類和具體的實體類。
//Base entity class
library
/Application
/Model
/Entity.php
//and the concrete entity class
application
/modules
/models
/Music.php //extends Namespace_Application_Model_Entity
我覺得以這種方式組織我的文件和類可以讓代碼儘可能幹,而不會讓人感到困惑和分散。
我希望這有助於。
模塊應該是100 %「自給自足」或模塊化。意思是,它應該只需要庫和你定義的任何自定義類。我們的目標是能夠將一個模塊從應用程序移植到應用程序,比如「插件」,所以我不認爲在默認應用程序和模塊中具有相同的模型是「非幹」的。乾杯 – mpm