使用PHP 5.3和Zend Framework 1.11.7我一直在尝试配置AutoLoader以自动加载驻留在默认目录应用程序/模型中的Model类(对于Zend_Db)。
我找到了以下解决方案:
我可以将以下函数添加到Bootstrap.php:
protected function _initLoader()
{
$loader = new Zend_Loader_Autoloader_Resource (array (
'basePath' => APPLICATION_PATH,
'namespace' => 'Default'));
$loader -> addResourceType ( 'model', 'models', 'Model');
}
它似乎是一个应该在application.ini中轻松设置的选项。所以我的问题是,是否有任何相关指令可以添加到application.ini执行我的函数执行的相同任务?
设置appnamespace指令后,我仍然需要添加以下函数:
protected function _initLoader()
{
$loader = new Zend_Loader_Autoloader_Resource (array (
'basePath' => APPLICATION_PATH));
$loader -> addResourceType ( 'model', 'models', 'Model');
}
否则它将找不到我的模型类。
唯一的区别是我删除了属性'namespace'。
我可以添加任何其他属性来完全删除此功能吗?
谢谢你! :)幼狮
答案 0 :(得分:1)
将以下内容放入application.ini
中appnamespace = "MyNamespace"
然后它将使用名为MyNamespace_Model_MyModel的类在application / models目录中加载一个文件。
答案 1 :(得分:1)
在你的application.ini中,你应该设置
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
appnamespace是您用于模型的前缀,因此如果您的模型是“Default_Model_User”,则appnamespace将为“Default”,如果您的模型是“Application_Model_User”,那么appnamespace将是“application”
这两个指令应该为默认应用程序
进行自动加载你也可以在你的bootstrap中设置它,你需要使用Zend_Application_Module_AutoLoader:
protected function _initDefaultModuleAutoloader()
{
$this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Application',
'basePath' => APPLICATION_PATH,
));
}