Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut, J'ai un souci de chargement d'un plugin exterieur.
voici un test simple
j'ai crée une classe extérieur qui se trouve dans library/Charge/LoadMoi.php de mon dossier projet
la voici
<?php class Charge_LoadMoi { public function parle() { echo " je suis la class LoadMoi"; } }
normalement il y a pas de quoi tuer un ours
j'ai une ligne qui me permet de charger LoadMoi dans application.ini
autoloadernamespaces[] = "Charge_"
depuois le contolleur j'appelle la methode parle()
$ecoute = new Charge_LoadMoi(); $ecoute->parle();
la c'est bon j'ai bien mon message
je suis la class LoadMoi
Maintenant je souhaite m'exercer sur le boostrap, (je décommante donc la ligne autloadernamespace)
;autoloadernamespaces[] = "Charge_"
je met donc dans celui ci dans le bootstrap
[lang=php] <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { public function _initLoader() { $ecoute = new Zend_Loader_Autoloader_Resource(array( 'basePath' => 'Charge/', 'namespace' => 'Charge', )); } }
j'appelle avec le controlleur
[lang=php] class IndexController extends Zend_Controller_Action { public function init() { var_dump(abc); $ecoute = new Charge_LoadMoi(); $ecoute->parle(); }
Notice: Use of undefined constant abc - assumed 'abc' in /var/www/ld/application/controllers/IndexController.php on line 8 string(3) "abc" Fatal error: Class 'Charge_LoadMoi' not found in /var/www/ld/application/controllers/IndexController.php on line 9
seul le dump a fontionner(affiche string3 (abc)), la methode ne fonctionne pas , je ne vois pas le message de parle()
Ily a t'il quelque chose que j'ai oublité ou mal fait
merci d'avance de la réponse
Dernière modification par keokaz (26-08-2011 18:07:04)
Hors ligne
var_dump(abc);
prend un variable en paramètre
abc est une constante qui semble ne pas être défini
du coup il utilise la chaine 'abc' à la place
mais 'abc' n'est pas une variable
var_dump plante et interrompt le process
donc la suite n'est pas exécuté
A+JYT
Hors ligne
merci sekajiin,
j'ai enlever le var_dump, je ne savais pas que ca bloque la suite
sinon maintenant j'ai retirer le zend::dump, (c'était pour test si j'atait bien dans le controlleur)
<?php class IndexController extends Zend_Controller_Action { public function init() { // echo "chargement ini <br/>"; $ecoute = new Charge_LoadMoi(); $ecoute->parle(); } public function indexAction() { // action body } }
Fatal error: Call to undefined method Zend_Loader_Autoloader::registrerNamespace() in /var/www/ld/application/Bootstrap.php on line 9
Dernière modification par keokaz (26-08-2011 21:04:14)
Hors ligne
Salut,
Utiliser autoloadernamespaces[] = "Charge_" revient à appeler la méthode :
[lang=php]Zend_Loader_Autoloader::getInstance()->registerNamespace('Charge_');
En effet, lors de l'appel "setOptions" de Zend_Application, si la propriété "autoloadernamespaces" existe, il a y un appel à "setAutoloaderNamespaces", qui va récupérer une instance de l'autoloader, puis parcourir le tableau d'options pour appeler "registerNamespace".
Zend_Loader_Autoloader_Resource, c'est pour créer un autoloader sur la base d'une ressource.
The Butcher
Dernière modification par thebutcher (29-08-2011 23:04:34)
Hors ligne
Pages: 1