0

使用 PHP 5.3 和 Zend Framework 1.11.7 我一直在尝试将 AutoLoader 配置为自动加载驻留在默认目录 application/models 中的模型类(用于 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'); 
}

否则它不会找到我的模型类。

唯一的区别是我删除了属性“命名空间”。

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

谢谢你!:)

克菲尔

4

2 回答 2

1

将以下内容放入您的 application.ini

appnamespace = "MyNamespace"

然后它将在您的应用程序/模型目录中加载一个文件,其中包含一个名为 MyNamespace_Model_MyModel 的类。

于 2011-06-13T23:24:12.987 回答
1

在您的 application.ini 中,您应该设置

appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

appnamespace 是您用于模型的前缀,因此如果您的模型是“Default_Model_User”,那么 appnamespace 将是“Default”,如果您的模型是“Application_Model_User”,那么 appnamespace 将是“application”

这两个指令应该为默认应用程序整理你的自动加载

您也可以在引导程序中设置它,您需要使用 Zend_Application_Module_AutoLoader:

protected function _initDefaultModuleAutoloader()
{
    $this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Application',
        'basePath'  => APPLICATION_PATH,
    ));
}
于 2011-06-13T23:24:54.873 回答