j'ai mis le chargeur automatique d'utiliser le chargeur automatique de secours comme ceci:aide de lecture avec Zend_View_Helper_ * et autoloading
$autoloader=Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);
Si je regarde les erreurs php, un avis est généré pour chaque appel à un Zend_View_Helper avec elle essayer pour lire l'aide à par exemple: /var/www/arc/views/helpers/
. Voici un exemple d'avis:
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
Il semble que la question est ici:
["_prefixToPaths:protected"] => array(1) {
["Zend_View_Helper_"] => array(2) {
[0] => string(17) "Zend/View/Helper/"
[1] => string(34) "/var/www/arc/views/helpers/"
}
Est-ce que l'aide de la FallbackAutoloader causer cela se produise? Cela semblerait être un problème de performance potentiel. En outre, il devrait résoudre l'espace de noms Zend_View_Helper_ correctement? Qu'est-ce que j'oublie ici?
Mise à jour: non, Zend/View/Helper/Layout.php
est là. Peut-être, il me manque le point de ce que le Zend_Loader_Autoloader est censé faire (je pense que les docs sont quelque peu faibles dans ce cas).
Par exemple, si j'ajuster mon application.ini à ce qui suit:
[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"
et sortie include_path, les modèles, le répertoire est clairement dans le chemin d'inclusion mais pas charger la classe.
Si je puis ajouter ce qui suit dans une fonction _init Bootstrap
$autoloader=Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);
Il charge très bien. Pour la première situation, ai-je besoin de définir un espace de nom?
à premier commentaire: ici sont des valeurs de courant avec sortie:
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) {
}
à droite mais ce sont leurs fichiers et il les cherche dans le bon chemin (ie Zend/View/Helper) pour chaque assistant utilisé. – timpone