簡體   English   中英

使用Zend_View_Helper_ *閱讀幫助程序並自動加載

[英]Reading helper with Zend_View_Helper_* and autoloading

我已將自動加載器設置為使用后備自動加載器,如下所示:

$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,models,目錄顯然在include路徑中,但不加載類。

如果我然后在Bootstrap _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) {
}

通知說什么? 我假設它試圖從該文件夾中自動加載幫助程序,而他沒有找到他期望的類。

您還有其他自動裝帶器嗎? 如果不是,則不需要setFallbackAutoloader(true)。

肯定有一些時髦的事情。 Zend / View / Helper / Layout.php是否以某種方式被刪除?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM