Zend 框架。 我想从 bootstrap 类中自动加载 models 文件夹中的模型类。 这些模型实际上并不使用任何命名空间(因此我有 Ex.User.php 文件的类名为 User 等等......)。
如果我理解正确,我应该使用 Zend_Loader_Autoloader_Resource 并且我尝试过:
function _initLoaderResource()
{
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => APPLICATION_PATH,//points to the "application" path where resides "models" folder
'namespace' =>''
));
$resourceLoader->addResourceType('models', 'models/');
}
我收到以下“Zend_Loader_Exception”消息:
'Initial definition of a resource type must include a namespace'
我的问题是:
- 这是自动加载模型的正确方法吗?
- 我应该如何管理不遵循 Zend Framework 编码标准的资源代码?
最佳答案
实际上,您可能不想为此使用资源自动加载器,因为(正如您所发现的)它需要一个命名空间。标准自动加载器(从包含路径加载模型)有一个选项 setFallbackAutoloader
,它告诉 ZF 该自动加载器应该用于与另一个类覆盖的命名空间不匹配的任何类。因此,您需要做的就是确保您的模型目录位于包含路径中并将此选项设置为 true。
您可能已经在使用标准自动加载器来加载 Zend 类,因此您可能需要修改 application.ini 文件以将模型目录添加到包含路径中,然后在 application.txt 文件中设置回退选项。 ini 或 Bootstrap 类中:
protected function _initAutoloader()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);
return $autoloader;
}
关于zend-framework - Zend 自动加载模型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6009626/