2010-02-02 40 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