2011-06-13 52 views
0

使用PHP 5.3和Zend Framework 1.11.7我一直在試圖配置AutoLoader來自動加載我的Model類(用於Zend_Db),它駐留在默認的目錄應用程序/模型中。如何在application.ini中爲AutoLoader配置默認名稱空間和模型位置?

我發現了以下解決方案:

我可以添加以下功能到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'。

我可以添加任何其他屬性來完全刪除此功能?

謝謝! :)

幼獅

回答

1

在你的application.ini你應該設置

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

的appnamespace是你用你的模型前綴,所以如果你的模型是「Default_Model_User」,那麼appnamespace將是「默認」,如果你的模型在「Application_Model_User」,那麼appnamespace將是「應用程序」

這兩個指令應理清你的默認應用程序

您還可以將其設置在引導文件自動加載,你需要使用Zend _Application_Module_AutoLoader:在http://framework.zend.com/manual/en/zend.loader.autoloader-resource.html

protected function _initDefaultModuleAutoloader() 
{ 
    $this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
     'namespace' => 'Application', 
     'basePath' => APPLICATION_PATH, 
    )); 
} 
+0

更多信息。看來它不能全部在ini文件中配置 – ufk 2011-06-16 08:41:35

1

把下面的在你的application.ini

appnamespace = "MyNamespace" 

然後,它會加載應用程序/ models目錄與命名MyNamespace_Model_MyModel類的文件。

相關問題