我想在myModule / Bootstrap.php中调用位于myModule / myFolders / myFile.php中的自定义类
这就是现在的样子:
<?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);
} }
如果我将自定义类移动到myModule / Modles文件夹并从那里调用它就可以了。
据我所知,Zend Bootstrap知道并自动从我的模块中加载位置为视图,控制器和模型。那么如何才能加载myFolder呢?
答案 0 :(得分:1)
有很多方法可以完成你想要做的事情。首先,我会问 - 是否需要在许多地方重用MyFolder_MyFile()类?如果没有,您可以考虑将该类的逻辑转换为自己的自定义引导程序 - 这会扩展您的Users_Bootstrap。然后,你会有这样的事情:
MyFolder_MyFileBootstrap extends Users_Bootstrap
然后,您可以选择创建单独的_init *方法 - 或者只是保持与您编写的方法兼容,您可能只需要创建一个新的_initAutoload()来执行父级 - 然后再使用您自己的任何逻辑。
<强> MyFolder_MyFileBootstrap :: _ initAutoload()强>
public function _initAutload() {
parent::_initAutload();
// my own logic here
}
但是,如果此解决方案会彻底改变您对应用程序进行编码的方式,则需要使用Zend Framework Autoloader的命名空间方法添加该文件。
对于您的示例,您可以在_initAutoloader()方法中尝试此操作:
$applicationAutoloader = $this->getResourceLoader();
$applicationAutloader->addResourceType('myfolder', 'MyFolder', 'MyFolder');
根据您的文件布局,您可能需要稍微调整一下。