begin process at 2012 05 30 17:49:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Classes & Objets

 > 

Pattern Factory et ReflectionClass ...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pattern Factory et ReflectionClass ...

mardi 14 août 2007 à 03:04:48 | Pattern Factory et ReflectionClass ...

LocalStone

Salut à tous ...
Alors voilà mon soucis. Je dois dans une de mes classes utiliser le pattern Factory. Non pas que je sois un grand fan des motifs de conception, mais là, j'ai pas le choix ...
Du coup j'ai quelque chose comme ça :
$objInstance = Manager :: createInstance('blablabla');
A l'interiteur de la classe createInstance, bah je suis bien embêté ... En fait, j'ai trois choix :
1) Faire un gros switch/case :
function createInstance($strParameter)
{
    switch($strParameter)
    {
       case 'blablabla' :
          return new ClasseBlaBlaBla();
          break;
       case 'bliblibli :
          return new ClasseBliBliBli();
          break;
       ...
       default :
          throw new Exception('Non supporté ! ');
    }
}


2) Faire utiliser les noms de classe dynamique :
function createInstance($strParameter)
{
    $arrNomDeClasses = array
       (
          'blablabla' => 'ClasseBlaBlaBla',
          'bliblibli' => 'ClasseBliBliBli',
       ...
       );

    if(!array_key_exisits($arrNomDeClasses, $strParameter)
       throw new Exception('Non implémenté ! ');

    return new $arrNomDeClasses[$strParameter]();
}


3) Utiliser l'API de Réfléxion :
function createInstance($strParameter)
{
    $arrNomDeClasses = array
       (
          'blablabla' => 'ClasseBlaBlaBla',
          'bliblibli' => 'ClasseBliBliBli',
       ...
       );   
    try
    {
        $objClasseDeReflexion = newReflectionClass($arrNomDeClasses[$strParameter];
    }
    catch(Exception $objException)
    {
       throw new Exception('Non supporté ! ');
    }
    return $objClasseDeReflexion -> newInstance();
}


L'avantage de la première solution, c'est qu'elle est rapide et propre, mais si un grand nombre de classe doit être pris en compte, alors ça devient un peu difficile à gérer.
La seconde et la troisième on l'avantage de pouvoir, moyennant quelques lignes de codes, de placer toutes les classes dont la génération doit être possibles et les inclure à la volée lorsqu'on en a besoin. Mais la seconde méthode est plutôt sale, et la troisième est extrêmement lente ...
Ma question est donc ... Qu'en pensez-vous ? Il est tard et j'ai pas creusé la question, mais je pense que je ne suis pas le seul à avoir eu ce problème ... Donc j'attends des réactions !
Merci !
LocalStone
mardi 14 août 2007 à 07:52:25 | Re : Pattern Factory et ReflectionClass ...

coucou747

Administrateur CodeS-SourceS
Salut

la troisieme te permet aussi d'effectuer des choses comme envoyer les arguments sous forme d'array, et appeller __construct() (enfin je crois)


une recherche sur exalead vous aurait peut-etre evite de poser cette question
In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy


Cette discussion est classée dans : return, blablabla, createinstance, strparameter, arrnomdeclasses


Répondre à ce message

Sujets en rapport avec ce message

Problème de compatibilité de script [ par Chris54 ] Bonjour,J'ai un problème d'execution d'un script javascript sous netscape alors qu'il fonctionne parfaitement sous IE mais je ne sais pas pourquoi.Que Return-Path [ par tardigrade ] Bonjour à tous,J'ai un problème de Return-Path lorsque j'utilise la fonction mail() de PHP.Lorsque que je passe au paramètre haeder de la fonction la help ~:^/ [ par ekinoks ] Salut !bon bha voilou... g touvoir un code sur internet permétent de testé si des repertoir existe ou pas sans avoir de message d'eureur. le pt proble Question sur formulaire en php et controle en js [ par jagdjg ] Je vais essayer d'expliquer: j ai donc un formulaire qui est controle par une fonction javascript, jusque la tout va bien.Le probleme c est que je gen return et while [ par righton ] Bonjour, voilà mon pb : j'ai une fonction dans laquelle je créé un tableau. Cette fonction retourne des valeurs, et je souhaite ajouter au return les Instancier une classe PHP5 dans un tableau Multidimensionnel [ par critters ] Salut tout le monde, dans le cadre d'un stage je dois faire un agenda qui s'alimente directement à partir d'une base de données contenant des interven vérification de chaines de caractères [ par Rankin ] Bonjour à tous, Bon mon problème n'est pas original mais malgré les réponses que j'ai trouvées sur ce forum, je n'arrive pas à faire fonctionner des f Erreur fsockopen() [ par cseagle ] Bonjour, J'essaye d'utiliser cette fonction pour vérifier l'éxistence de l'email. Le problème c'est qu'avec une adresse du type t@tyuiop.com il me fa SVP ! verification si l'ip a changé ! [ par chico200987 ] Alors voici mon code : _______________________________________________________________________ Conflit avec if ($file == "xxx") require... [ par PouiF ] Bonjour les amis zéros original.gif Je suis actuellement entrain de faire mon site et cette requete a toujours marché, ce code ce trouve dans requete


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales