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


how can I configure default namespace and Model location for the AutoLoader in application.ini?

使用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的类的文件。