使用PHP 5.3和Zend Framework 1.11.7,我一直在尝试配置AutoLoader以自动加载驻留在默认目录application/models中的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"。
我可以添加任何其他属性来完全删除这个函数吗?
谢谢!:)
Kfir
在application.ini中,您应该设置
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
appnamespace是您用于模型的前缀,因此如果您的模型为"Default_model_User",则appnamespace将为"Default",如果您的型号为"Application_model_User",则应用名称空间将为"Application"
这两个指令应该为默认应用程序的自动加载进行排序
您也可以使用在引导程序中设置它,您需要使用Zend_Application_Module_AutoLoader:
protected function _initDefaultModuleAutoloader()
{
$this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Application',
'basePath' => APPLICATION_PATH,
));
}
在application.ini 中放入以下内容
appnamespace = "MyNamespace"
然后,它将在应用程序/模型目录中加载一个名为MyNamespace_Model_MyMyModel的类的文件。