tak*_*hin 20 php zend-framework
我正在寻找一些很好的资源来学习如何在Zend Framework中实现内部服务层.这是 Bookie Link的有趣帖子,但没有具体的代码示例.
/application/modules/modulename/services/?);Jam*_*esG 22
我认为这个问题的答案取决于您的需求,时间限制以及您对软件开发的总体方式.
我最近(A)决定在一个小而复杂的Web应用程序上使用Zend Framework,该应用程序的截止日期非常紧迫,并且(B)花费了大量时间来研究ORM解决方案和不同的ZF应用程序结构.我得出的结论是,没有一个通用的解决方案,您应该随意获得创意并构建一个您满意的应用程序结构.
如果您有严格的时间限制且应用程序不是太大,那么您可以创建具有类似名称的类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' );
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以创建类,比如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+?)
ump*_*sky 13
您不需要黑客来获得服务层工作.默认自动加载器在应用程序中有一个资源名称空间Service_with services文件夹.因此,它将从application\services加载服务层,类应遵循Service_*命名模式.
| 归档时间: |
|
| 查看次数: |
11432 次 |
| 最近记录: |