Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-08-2009 15:22:17

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

[1.9] Chercher des plugins dans plusieurs dossiers différents

Bonjour,

Je cherche à charger des plugins qui peuvent se trouver dans différent dossiers.

Exemple de structure
root
    /manager/plugins/
    /plugins/
    /core/plugins/

Le plugin peut se trouvez dans un seul de ces dossiers. Mais le nom de la class du plugin doit être le même. C'est-à-dire par exemple :

Sys_Plugin_MonPlugin

Donc j'ai commencé à codé quelque chose comme ça pour  /core/plugins/ :

Code:

        $this->_pluginLoader = new Zend_Loader_Autoloader_Resource ( array ('namespace' => 'Sys', 'basePath' => $basePath ) );
        
        $this->_pluginLoader->addResourceType ( 'Plugins', 'core'.S.'plugins'.S, 'Plugins' );

Ensuite, j'ai ajouter ceci pour /plugins/:

Code:

$this->_pluginLoader->addResourceType ( 'AddPlugins', 'plugins', 'Plugins' );

Donc lorsque le plugin est dans  /plugins/ ca fonctionne bien. Mais si je le déplace dans /core/plugins/, j'ai l'impression que ma ligne :

Code:

$this->_pluginLoader->addResourceType ( 'Plugins', 'core'.S.'plugins', 'Plugins' );

a été écrasée par :

Code:

$this->_pluginLoader->addResourceType ( 'AddPlugins', 'plugins', 'Plugins' );

Pouvez-vous me dire si c'est possible ce que je demande à faire, et pourquoi cela ne fonctionne pas ?

Merci infiniment,

Codialement

Dernière modification par nicko (20-08-2009 15:22:54)

Hors ligne

 

#2 20-08-2009 17:24:01

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.9] Chercher des plugins dans plusieurs dossiers différents

Salut,

Si c'est possible d'une autre manière je ne sais pas, mais via Zend_Loader_Autoloader_Resource je ne crois pas. J'avais tenté cela également, et en regardant la classe Zend_Loader_Autoloader_Resource j'avais constaté qu'il n'associait dans une de ces propriétés que le dernier chemin pour un namespace donné.

Via un ...

Code:

Zend_Debug::dump(Zend_Loader_Autoloader::getInstance()->getAutoloaders());

... on peut voir qu'il y a une propriété _resourceTypes qui contient probablement bien tes lignes 2 lignes, laissant penser que ça devrait fonctionner. Mais il y a aussi une propriété _component, qui ne contient qu'une fois chaque namespace et le dernier chemin qui lui a été affecté.

Malheureusement la méthode _autoload semble se fier plus à cette deuxième propriété qu'à la première (ce qui est bien dommage)

Edit : je n'ai pas approfondi le problème, mais il est probable que celui puisse se résoudre en instanciant trois Zend_Loader_Autoloader_Resource (un pour chaque chemin). Alternative éventuelle...

Dernière modification par Eureka (20-08-2009 17:26:36)

Hors ligne

 

#3 03-09-2009 18:39:43

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [1.9] Chercher des plugins dans plusieurs dossiers différents

nicko, aurais-tu trouvé une solution implémentée dans Zend ou une alternative à ce problème ?

Hors ligne

 

#4 03-09-2009 22:44:58

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [1.9] Chercher des plugins dans plusieurs dossiers différents

Bonsoir,

Non je n'ai pas trouvé de solution pour le moment, et j'avoue que je ne mis suis pas penché plus longuement depuis, car il y a d'autres parties du CMS que je dois développer avant pour mettre en place ce système. Mais je pense que je m'y re-pencherais dessus en début de semaine prochaine.

Mais je pense aussi que c'est possible puisque j'ai fait quelque chose d'équivalant sur une autre partie. Il faut que je revois ça. Je donnerais des nouvelles.

PS: Si j'oublie, il ne faut pas hésiter me rappeler à l'ordre wink

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