如何在application.ini中为AutoLoader配置默认命名空间和模型位置?

时间:2011-06-13 22:34:39

标签: php zend-framework zend-db zend-autoloader

使用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'。

我可以添加任何其他属性来完全删除此功能吗?

谢谢你! :)

幼狮

2 个答案:

答案 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,
    ));
}