neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 6 nov. 2007 à 13:55
Rhaaaaaaaaaaaaaa !!!!
Ca y est !!!! J'ai compris !!!!
Pfffffffffff... Bon, je mets à jour tout à l'heure :D
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 6 nov. 2007 à 13:24
Bref, enlèves le "!" !! ;-)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 6 nov. 2007 à 13:23
Lol,
SI je passe $sName, ET que je ne passe pas $sRoot à ta méthode, je me retrouve dans le dernier throw, c'est ça qui me gène :
# # Root not specified, and instance exists
# elseif(!is_null($sRoot) && isset(self::$aInstances[$sName])) {
# return self::$aInstances[$sName];
# }
Tu dis "Root not specified" mais ton code dit le contraire : "!is_null($sRoot)" : "!is_null", pas "is_null", donc quand $sRoot n'est PAS null, donc, quand on l'a spécifié dans l'appel à ta méthode.
On ne rentre jamais dans cette condition, parce qu'elle est identique à la 1ère.
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 6 nov. 2007 à 12:02
@Malalam :
J'ai vraiment du mal à voir ce qui te gêne...
Premier cas : On vérifie que $sName et $sRoot contiennent quelque chose, donc ne sont ni "null" ni ne sont la chaine vide. En toute logique, cela signifie que deux paramètres non vides parce qu'on veut créer une nouvelle instance de pluginManager. On vérifie donc si l'instance existe déjà ou pas. On la crée si besoin, puis on la retourne.
Deuxième cas : le deuxième argument est omis lors de l'appel à getInstance(). Cela se traduit par un appel de la sorte :
pluginManager::getInstance('db');
So le second paramètre ($sRoot) est omis lors de l'appel, il vaut null par défaut. J'aurais pu mettre 'trucmachin' ou 'bidulechose', ça n'eut pas changé grand chose si ce n'est le test ensuite. Si $sRoot vaut null, c'est qu'on l'a volontairement omis lors de l'appel, parce qu'on suppose que l'instance existe déjà, et qu'on se contente de la récupérer.
Je ne vois vraiment pas ce qui te gêne... Si ça te pose toujours problème, je veux bien plus de détails... ;)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 6 nov. 2007 à 08:05
@neige =>
# Root not specified, and instance exists
elseif(!is_null($sRoot) && isset(self::$aInstances[$sName])) {
return self::$aInstances[$sName];
}
C'est ça que je ne comprends toujours pas :-)
!is_null($sRoot) ça veut dire : si la racine n'est PAS === null, donc si elle est précisée, puisque par défaut dans l'appel de ta fonction elle est à null ?
Donc ce cas-ci, c'est si on passe les 2 arguments.
Dans le premier cas aussi. A mon avis, t'as un "!" en trop, non?
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 5 nov. 2007 à 00:40
Oh ben c'est gentil ça... J'sais plus où m'mettre...
Pour la propreté et la lisibilité, je ne fais que penser en permanence à ceux qui liront le code... C'est pas compliqué en fait.
Bref...
Merci ^^
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 5 nov. 2007 à 00:23
Je me permet d'ajouter un commentaire pour pouvoir noter (c'est chiant ça! ;) )
Donc un 10/10 pour la propreté et l'utilité que cela peut avoir
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 5 nov. 2007 à 00:21
Alors là ...J'adhere et j'adore ! ^^
Voyons que dire...
Après lecture de ton code que je ne peut caractériser que par le terme beau et agréable.
Je demande a voir plus !!! et surtout reste sur ce style de code :)
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 4 nov. 2007 à 12:46
Salut,
Merci pour ton commentaire.
"Quand on passe un nom de plugin et une racine, tu fous ça directement dans tes instances sans vérifier que ce plugin n'y est pas déjà activé. Pourquoi ?"
=> Héhé... Parce que j'ai oublié de faire la vérification :o)
"Et ensuite, tu retournes l'instance seulement si on ne passe pas de nom MAIS qu'on passe une racine. Là encore, que vient foutre la racine au milieu?"
=> Non, c'est le contraire ! Je ne retourne l'instance que si on demande son nom, sans spécifier de racine !
Ta question m'embrouillait, mais tu as du te mélanger les noeils :
public static function getInstance($sName, $sRoot=NULL)
Si on passe un nom en argument, on retourne le pluginManager qui correspond à ce nom. Le chemin, il le connait déjà.
C'est pour ça que j'ai zappé la vérification dont tu soulignes, à juste titre, l'oubli : c'est parce que je considérais (à tort) qu'un pluginManager s'instancie une fois avec les deux paramètres, et qu'après, on en récupère l'instance en n'y passant forcément qu'un seul (le nom). Or, c'est pas sécurisé, parce que je préjuge ainsi que le développeur sera sage et fera bien comme on lui dit.
Je vais donc rajouter ce test cet après-midi.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 nov. 2007 à 11:55
Hello,
je tâcherai de tester ça. Mais après avoir parcouru ton code, j'aimerais une petite explication sur pluginManager::getInstance() que je trouve curieuse (comme méthode).
Quand on passe un nom de plugin et une racine, tu fous ça directement dans tes instances sans vérifier que ce plugin n'y est pas déjà activé. Pourquoi ? Et ensuite, tu retournes l'instance seulement si on ne passe pas de nom MAIS qu'on passe une racine. Là encore, que vient foutre la racine au milieu?
Sinon c'est joliment codé, déjà :-)
6 nov. 2007 à 13:55
Ca y est !!!! J'ai compris !!!!
Pfffffffffff... Bon, je mets à jour tout à l'heure :D
6 nov. 2007 à 13:24
6 nov. 2007 à 13:23
SI je passe $sName, ET que je ne passe pas $sRoot à ta méthode, je me retrouve dans le dernier throw, c'est ça qui me gène :
# # Root not specified, and instance exists
# elseif(!is_null($sRoot) && isset(self::$aInstances[$sName])) {
# return self::$aInstances[$sName];
# }
Tu dis "Root not specified" mais ton code dit le contraire : "!is_null($sRoot)" : "!is_null", pas "is_null", donc quand $sRoot n'est PAS null, donc, quand on l'a spécifié dans l'appel à ta méthode.
On ne rentre jamais dans cette condition, parce qu'elle est identique à la 1ère.
6 nov. 2007 à 12:02
J'ai vraiment du mal à voir ce qui te gêne...
Premier cas : On vérifie que $sName et $sRoot contiennent quelque chose, donc ne sont ni "null" ni ne sont la chaine vide. En toute logique, cela signifie que deux paramètres non vides parce qu'on veut créer une nouvelle instance de pluginManager. On vérifie donc si l'instance existe déjà ou pas. On la crée si besoin, puis on la retourne.
Deuxième cas : le deuxième argument est omis lors de l'appel à getInstance(). Cela se traduit par un appel de la sorte :
pluginManager::getInstance('db');
So le second paramètre ($sRoot) est omis lors de l'appel, il vaut null par défaut. J'aurais pu mettre 'trucmachin' ou 'bidulechose', ça n'eut pas changé grand chose si ce n'est le test ensuite. Si $sRoot vaut null, c'est qu'on l'a volontairement omis lors de l'appel, parce qu'on suppose que l'instance existe déjà, et qu'on se contente de la récupérer.
Je ne vois vraiment pas ce qui te gêne... Si ça te pose toujours problème, je veux bien plus de détails... ;)
6 nov. 2007 à 08:05
# Root not specified, and instance exists
elseif(!is_null($sRoot) && isset(self::$aInstances[$sName])) {
return self::$aInstances[$sName];
}
C'est ça que je ne comprends toujours pas :-)
!is_null($sRoot) ça veut dire : si la racine n'est PAS === null, donc si elle est précisée, puisque par défaut dans l'appel de ta fonction elle est à null ?
Donc ce cas-ci, c'est si on passe les 2 arguments.
Dans le premier cas aussi. A mon avis, t'as un "!" en trop, non?
5 nov. 2007 à 00:40
Pour la propreté et la lisibilité, je ne fais que penser en permanence à ceux qui liront le code... C'est pas compliqué en fait.
Bref...
Merci ^^
5 nov. 2007 à 00:23
Donc un 10/10 pour la propreté et l'utilité que cela peut avoir
5 nov. 2007 à 00:21
Voyons que dire...
Après lecture de ton code que je ne peut caractériser que par le terme beau et agréable.
Je demande a voir plus !!! et surtout reste sur ce style de code :)
4 nov. 2007 à 12:46
Merci pour ton commentaire.
"Quand on passe un nom de plugin et une racine, tu fous ça directement dans tes instances sans vérifier que ce plugin n'y est pas déjà activé. Pourquoi ?"
=> Héhé... Parce que j'ai oublié de faire la vérification :o)
"Et ensuite, tu retournes l'instance seulement si on ne passe pas de nom MAIS qu'on passe une racine. Là encore, que vient foutre la racine au milieu?"
=> Non, c'est le contraire ! Je ne retourne l'instance que si on demande son nom, sans spécifier de racine !
Ta question m'embrouillait, mais tu as du te mélanger les noeils :
public static function getInstance($sName, $sRoot=NULL)
Si on passe un nom en argument, on retourne le pluginManager qui correspond à ce nom. Le chemin, il le connait déjà.
C'est pour ça que j'ai zappé la vérification dont tu soulignes, à juste titre, l'oubli : c'est parce que je considérais (à tort) qu'un pluginManager s'instancie une fois avec les deux paramètres, et qu'après, on en récupère l'instance en n'y passant forcément qu'un seul (le nom). Or, c'est pas sécurisé, parce que je préjuge ainsi que le développeur sera sage et fera bien comme on lui dit.
Je vais donc rajouter ce test cet après-midi.
4 nov. 2007 à 11:55
je tâcherai de tester ça. Mais après avoir parcouru ton code, j'aimerais une petite explication sur pluginManager::getInstance() que je trouve curieuse (comme méthode).
Quand on passe un nom de plugin et une racine, tu fous ça directement dans tes instances sans vérifier que ce plugin n'y est pas déjà activé. Pourquoi ? Et ensuite, tu retournes l'instance seulement si on ne passe pas de nom MAIS qu'on passe une racine. Là encore, que vient foutre la racine au milieu?
Sinon c'est joliment codé, déjà :-)