Php ZEND:在模块引导中加载自定义类
我想调用位于myModule/Bootstrap.php中的myModule/myFolders/myFile.php中的自定义类 这就是它现在的样子:Php ZEND:在模块引导中加载自定义类,php,zend-framework,zend-app-bootstrap,Php,Zend Framework,Zend App Bootstrap,我想调用位于myModule/Bootstrap.php中的myModule/myFolders/myFile.php中的自定义类 这就是它现在的样子: <?php class Users_Bootstrap extends Zend_Application_Module_Bootstrap { public function _initAutoload() { Zend_Loader_Autoloader::getInstance()-
<?php
class Users_Bootstrap extends Zend_Application_Module_Bootstrap {
public function _initAutoload() {
Zend_Loader_Autoloader::getInstance()->pushAutoloader(new NAMESPACE_Excel_ExcelAutoLoader()); // This workes fine
new Myfolder_Myfile(); // THIS IS WHERE I'm CALLING my CLASS
}
public function _initRoutes() {
$router = Zend_Controller_Front::getInstance()->getRouter();
$listUsersRoute = new Zend_Controller_Router_Route("admin/users/manage", array(
'module' => 'users',
'controller' => 'admin',
'action' => 'index' ));
$router->addRoute('listUsersRoute', $listUsersRoute);
} }
有很多方法可以完成你想做的事情。首先,我想问-是否需要在许多地方重用MyFolder\u MyFile()类?如果不是,您可以考虑将该类的逻辑转换为它自己的自定义引导程序,它扩展了您的UsSersBootstrap。然后,你会有这样的东西:
MyFolder_MyFileBootstrap extends Users_Bootstrap
然后,您可以选择创建单独的_init*方法,或者只是为了保持编写时的兼容性,您可以创建一个新的_initAutoload(),首先执行父级,然后执行您自己的任何逻辑
MyFolder\u MyFileBootstrap::\u initAutoload()
但是,如果此解决方案将彻底改变您编写应用程序的方式,则需要使用Zend Framework Autoloader的名称空间方法添加该文件
对于您的示例,您可以在_initAutoloader()方法中尝试以下操作:
根据您的文件布局,您可能需要对此进行一些调整
public function _initAutload() {
parent::_initAutload();
// my own logic here
}
$applicationAutoloader = $this->getResourceLoader();
$applicationAutloader->addResourceType('myfolder', 'MyFolder', 'MyFolder');