2011-09-26 77 views
0

我正在使用this自動加載機在我的zend應用程序中加載多個外部庫。類正確加載並正常工作。但我似乎有一個問題,而使用多個這樣的自動加載器加載類。的問題是,在自動加載機中的一個找到類後,Zend的繼續搜索在其它裝載機因此產生從自動加載機下面的錯誤消息,除了從它們在所定義的一個zend自動加載機的錯誤信息

說明:未定義指數:myClassFile在 /var/www/myApp/application/loaders/Autoloader/PhpThumb.php上 線21

其中myClassFile在另一個裝載機和裝載/做工精細的定義,但它仍然繼續在這個第二自動加載搜索沒有定義的地方。

任何想法我失蹤?


更新: 我的引導文件:

<?php 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
    protected function _initAutoload() 
    { 
     $autoLoader=Zend_Loader_Autoloader::getInstance(); 
     $resourceLoader=new Zend_Loader_Autoloader_Resource(array(
      'basePath'=>APPLICATION_PATH, 
      'namespace'=>'', 
      'resourceTypes'=>array(
       'form'=>array(
        'path'=>'forms/', 
        'namespace'=>'Form_' 
       ), 
       'models'=>array(
        'path'=>'models/', 
        'namespace'=>'Model_' 
       ),     
      ) 

      )); 

     //return $autoLoader; 

     $resourceLoader->addResourceType('loader', 'loaders/', 'My_Loader_'); 
     $autoLoader->pushAutoloader($resourceLoader); 

     //load PhpThumb class 
     $autoLoader->pushAutoloader(new My_Loader_Autoloader_PhpThumb()); 

     //load Factory Class 
     $autoLoader->pushAutoloader(new My_Loader_Autoloader_Factory()); 
    } 


} 


?> 

和以後使用它:

$factory=new Factory(); 

這似乎很好地工作,但會拋出錯誤。

+0

你可以粘貼你實例化自動裝載機的行嗎?您將自定義自動加載器添加到Zend的自定義加載器的方式非常重要,我認爲衝突是來自它的。 –

回答

-2

我可能無法正確理解您的問題。但是,如果你正試圖自動加載外部庫,如PhpThumb,那麼你做錯了。由於多次自動加載會使應用程序變慢。在像PhpThumb這樣的庫中,幾乎沒有一個php文件簡單地使用require_once。並把這個路徑APPLICATION_PATH/library/PhpThumb.php

+2

什麼時候自動加載減慢應用程序?自動加載提高了應用程序的性能,因爲它僅加載需要時的所需內容。甚至在官方Zend的性能指南中,強烈建議從Zend庫本身中去除所有「require_once」。 –

+0

自動加載器本身最終使用require_once。僅爲一個文件註冊自動加載器會浪費資源。 –