Paul
2009-03-06 07:53:03 UTC
Bonjour,
Je ne sais pas comment faire et gérer ceci dans un script php :
J'ai une classe A, une classe B qui extends A, et une classe C qui
extends A.
B et C font strictement la même chose mais d'une manière différente
chacune.
J'ai un fichier de config dans lequel je souhaiet paramétrer soit
l'utilisation de la classe B soit la C.
J'aimerai ensuite, que mon script instancie la classe selon la config
(soit B, soit C) et ensuite, qu'il appelle la méthode (qui porte le
même nom dans la classe B que dans la classe C).
Mon probleme est que je veux éviter d'avoir un switch en fonction de
la classe ; j'aimerai en gros mettre le nom de la classe en variable,
mais je ne pense pas que ce soit possible.
donc :
$config['use_classe'] = "C";
switch($config['use_classe'])
/*c'est ce switch que j'aimerai rendre plus "général" ; si un jour je
souhaite ajouter une troisième classe possible (D) qui ferai encore la
même chose que B ou C */
{
case "B" : $foo = new B(); break;
case "C" : $foo = new C(); break;
}
$foo->bar();
Pour être plus précis :
A : un gestionnaire de base de données
B : gestionnaire mysql
C : gestionnaire sqlite
... ...
Quel est la bonne méthode à employer pour faire ça ?
merci.
Je ne sais pas comment faire et gérer ceci dans un script php :
J'ai une classe A, une classe B qui extends A, et une classe C qui
extends A.
B et C font strictement la même chose mais d'une manière différente
chacune.
J'ai un fichier de config dans lequel je souhaiet paramétrer soit
l'utilisation de la classe B soit la C.
J'aimerai ensuite, que mon script instancie la classe selon la config
(soit B, soit C) et ensuite, qu'il appelle la méthode (qui porte le
même nom dans la classe B que dans la classe C).
Mon probleme est que je veux éviter d'avoir un switch en fonction de
la classe ; j'aimerai en gros mettre le nom de la classe en variable,
mais je ne pense pas que ce soit possible.
donc :
$config['use_classe'] = "C";
switch($config['use_classe'])
/*c'est ce switch que j'aimerai rendre plus "général" ; si un jour je
souhaite ajouter une troisième classe possible (D) qui ferai encore la
même chose que B ou C */
{
case "B" : $foo = new B(); break;
case "C" : $foo = new C(); break;
}
$foo->bar();
Pour être plus précis :
A : un gestionnaire de base de données
B : gestionnaire mysql
C : gestionnaire sqlite
... ...
Quel est la bonne méthode à employer pour faire ça ?
merci.