我认为这个问题的答案取决于您的需求、您的时间限制以及您对软件开发的总体方法/风格。
我最近 (A) 决定在一个小而复杂的 Web 应用程序上使用 Zend Framework,该应用程序的截止日期非常紧迫,并且 (B) 我花了很多时间研究 ORM 解决方案和不同的 ZF 应用程序结构。我得出的结论是,没有一种万能的解决方案,您应该随意发挥创意并构建一个您满意的应用程序结构。 p>
如果您有时间限制并且应用程序不是太大,那么您可以创建名称为Application_Model_BlahService 的类并将它们存储在application/models 目录中,默认情况下它们会被自动加载器拾取(假设自动加载器已正确引导)。
但是,如果您的应用程序更大,或者由于某些其他原因,您希望将类拆分到更多目录中,您可以在应用程序目录下创建自己的子目录并使用类似于下面的代码(可能存在在您的application/Bootstrap.php) 中将这些类添加到自动加载器:
protected function _initResourceLoader()
{
$this->_resourceLoader->addResourceType( 'service', 'services', 'Service' );
$this->_resourceLoader->addResourceType( 'serviceplugin', 'services/plugins', 'Service_Plugin' );
}
然后您可以创建像Application_Service_Invoice 这样的类,它们将驻留在application/services/Invoice.php 和Application_Service_Plugin_TaxPlugin,它们将驻留在application/services/plugins/TaxPlugin.php。 (注意:上面的代码假设您使用的是Zend_Application)。
理论上,您可以根据自己的喜好将模型类与服务类与数据访问类等分开。但同样,这取决于您喜欢的开发风格,团队,在某种程度上,你的持久层对你的要求是什么。
最后一件事:查看Zend_Application_Module_Autoloader 以获取默认添加到自动加载器的资源列表。 (我应该在这个答案中提到我指的是 ZF 1.8+ 吗?)