ZF 1.x 并不是真正的模块化,我认为 ZF 1.x 中的模块有点用词不当。在我看来,它们更像是域库。话虽如此,我这样看待代码分离(纯粹的观点)。
我希望在我放入库中的另一个项目中重用或可重用的任何代码。例如。查看助手、动作助手、抽象模型类、基础模型、插件等...
任何特定于应用程序的代码,将在我放在应用程序级目录中的应用程序中普遍使用。这是具体的数据映射器、DbTable 模型(我不使用 Doctrine)、表单和布局之类的东西……
任何专门属于模块(域)并且不会或不能在我放在模块级目录中的其他任何地方使用的代码。这包括特殊视图和动作助手之类的东西,一种形式,主要是我放置域(实体)模型的地方。
为了说明这一点,我将提供一个示例(省略个人命名空间):
我的应用程序中有一个名为music的模块,该模块有一个名为'music'的数据库表。
所以这些是我可能必须在我的模块中使用这个 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
我觉得以这种方式组织我的文件和类可以使代码尽可能干燥,而不会过于混乱和分散。
我希望这有帮助。