Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-08-2011 17:40:56

keokaz
Membre
Date d'inscription: 06-07-2011
Messages: 113

Comment charger une classe extérieur ??

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

Code:

<?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

Code:

autoloadernamespaces[] = "Charge_"

depuois le contolleur j'appelle la methode parle()

Code:

        $ecoute = new Charge_LoadMoi();
        $ecoute->parle();

la c'est bon j'ai bien mon message

Code:

je suis la class LoadMoi

Maintenant je souhaite m'exercer sur le boostrap, (je décommante donc la ligne autloadernamespace)

Code:

;autoloadernamespaces[] = "Charge_"

je met donc dans celui ci  dans le bootstrap

Code:

[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

Code:

[lang=php]
class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        var_dump(abc);
        $ecoute = new Charge_LoadMoi();
        $ecoute->parle();        
    }

Code:

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 smile

Dernière modification par keokaz (26-08-2011 18:07:04)

Hors ligne

 

#2 26-08-2011 20:52:36

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Comment charger une classe extérieur ??

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

 

#3 26-08-2011 21:03:34

keokaz
Membre
Date d'inscription: 06-07-2011
Messages: 113

Re: Comment charger une classe extérieur ??

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)

Code:

<?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
    }
}

Code:

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

 

#4 29-08-2011 22:42:20

thebutcher
Nouveau membre
Date d'inscription: 29-08-2011
Messages: 6

Re: Comment charger une classe extérieur ??

Salut,

Utiliser autoloadernamespaces[] = "Charge_" revient à appeler la méthode :

Code:

[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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages