我在zf1中使用模块化布局,我想为每个模块创建特定的库,如下所示:/ application / modules / default / library
同时保持通用库仍然可用于:/ library
问题是如何告诉ZF自动加载这些文件夹中的所有文件? 我尝试在我的引导程序中使用Zend_Loader_Autoloader_Resource和以下代码
protected function _initLibrary()
{
$resources = array(
'basePath' => APPLICATION_PATH . '/modules/default/library',
'namespace' => 'Default',
'resourcesTypes' => array(
'Form' => array(
'path' => 'Form/',
'namespace' => 'Form'
)
)
);
$resourceLoader = new Zend_Loader_Autoloader_Resource($resources);
}
我在/application/modules/default/library/Form/AdminCreate.php中创建了一个文件,其中包含一个扩展Zend_Form的类Default_Form_AdminCreate。
但是,当我尝试创建此类的实例时,它失败了:致命错误:未找到类'Default_Form_AdminCreate'
这可以通过Zend_Loader_Autoloader_Resource实现,还是我错过了什么? 感谢。
答案 0 :(得分:0)
我找到了一个现在可行的解决方案。我在这里发帖也许其他人需要它:
protected function _initModules()
{
$modules = scandir(APPLICATION_PATH . '/modules');
foreach ($modules as $m) {
if ($m != '.' && $m != '..') {
// Adding path for library
set_include_path(implode(PATH_SEPARATOR, array(realpath(APPLICATION_PATH . '/modules/'.$m.'/library'), get_include_path())));
}
spl_autoload_register(function($classname){
include str_replace('_', DIRECTORY_SEPARATOR, $classname) . '.php';
});
}
}
此函数应放在Bootstrap.php中,并且如果模块库存储在/ application / modules / * module_name * / library
中,则可以正常工作