2010-02-02 68 views
1

我已經設置爲使用回退自動加載這樣的自動加載磁帶機:閱讀傭工Zend_View_Helper_ *和自動加載

$autoloader=Zend_Loader_Autoloader::getInstance(); 
$autoloader->setFallbackAutoloader(true); 

如果我看的PHP錯誤,在每次調用與它Zend_View_Helper的努力所產生的通知閱讀幫助者,例如:/var/www/arc/views/helpers/。下面是一個簡單的通知:

fopen(/var/www/arc/views/helpers/Layout.php) [<a href='function.fopen'>function.fopen</a>]: 
failed to open stream: No such file or directory in file /private/var/www/arc/ZendFramework- 
1.9.5/library/Zend/Loader.php at line: 165 

好像這個問題在這裏:

["_prefixToPaths:protected"] => array(1) { 
    ["Zend_View_Helper_"] => array(2) { 
    [0] => string(17) "Zend/View/Helper/" 
    [1] => string(34) "/var/www/arc/views/helpers/" 
    } 

是否使用FallbackAutoloader導致這種情況發生?這似乎是一個潛在的性能問題。另外,它應該正確解析名稱空間Zend_View_Helper_?我在這裏錯過了什麼?

更新: 不,Zend/View/Helper/Layout.php在那裏。

也許,我錯過了Zend_Loader_Autoloader應該做的事情(我認爲文檔在這種情況下有點弱)。

例如,如果我調整我的application.ini文件到以下幾點:

 
[production] 
phpSettings.display_startup_errors = 0 
phpSettings.display_errors = 0 
includePaths.library = APPLICATION_PATH "/../library" 
includePaths.models= APPLICATION_PATH "/models" 
includePaths.helper= APPLICATION_PATH "/controllers/helpers" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 

和輸出的include_path,模特,目錄,顯然是在包括路徑,但不加載的類。

如果我然後添加以下的自舉功能_init

$autoloader=Zend_Loader_Autoloader::getInstance(); 
$autoloader->setFallbackAutoloader(true); 

它加載的罰款。對於前一種情況,我是否需要設置命名空間?

先評論: 這裏有電流值與輸出:

Zend_Debug::dump($loader->isFallbackAutoloader(),'is fallback autoloader'); 
is fallback autoloader bool(false) 

Zend_Debug::dump($loader->getDefaultAutoloader(),'default autoloader'); 
default autoloader array(2) { 
    [0] => &string(11) "Zend_Loader" 
    [1] => string(9) "loadClass" 
} 

Zend_Debug::dump($loader->getAutoloaders(),'autoloaders'); 
autoloaders array(0) { 
} 

回答

0

什麼通知說什麼? 我會假設它試圖自動加載該文件夾中的助手,並且他沒有找到他期望的類。

+0

正確,但這些都是他們的文件,它使用正確的路徑(即Zend/View/Helper)查找每個幫助器。 – timpone 2010-02-02 21:48:45

0

你有沒有其他的自動加載機?如果不是,則不需要設置FallbackAutoloader(true)。

絕對有一些時髦的事情發生。不知怎的,Zend/View/Helper/Layout.php會被刪除嗎?

+0

在'對第一條評論'添加信息 – timpone 2010-02-07 19:53:30