POO : définir la bonne classe suivant des variables

POO : définir la bonne classe suivant des variables - PHP - Programmation

Marsh Posté le 29-11-2009 à 13:00:54    

Bonjour,
 
Je suis en train d'écrire un programme PHP orienté objet.
 
Je débute dans le php Objet (depuis hier) et j'aurais donc besoin de vos lumières :D
 
J'ai un programme php où sont définies des variables : par exemple $os="suse", $version=10 et $arch="i386".
 
J'ai défini des classes de la façon suivante
 

Code :
  1. class Template {
  2.         public function whoami(...) {
  3.         ...
  4.         }
  5.          ....
  6. }
  7. class Suse extends Template {
  8.         public $os="Suse";
  9.         ...
  10. }
  11. class Suse10 extends Suse {
  12.         public $version=10;
  13.         ...
  14. }
  15. final class SuSE10_x86_64 extends Suse10 {
  16.         public $arch="x86.64";
  17.         ...
  18. }


 
Avec les variables définies ($os="suse", $version=10 et $arch="i386" ) j'aurais aimé savoir s'il y avait une fonction (ou une astuce) qui permettrait de définir la classe enfant adaptée.
C'est à dire lorsque j'appelle par exemple la méthode whoami() de la classe template celle-ci me renvoie la seule classe possédant tous ces attributs, c'est à dire que la fonction détermine que je fais référence à la classe SuSE10_x86_64 car cette classe est la seule à posséder les attributs $os="suse", $version=10 et $arch="i386".
 
Je veux quelque chose de dynamique car actuellement le seul moyen qui j'ai trouvé c'est avec un switch dans la méthode whoami de la classe template. J'aimerai quelque chose qui se base sur __CLASS__ pour me renvoyer la bonne classe (quelque chose qui ne soit pas statique comme ci-dessous).
 

Code :
  1. switch($os) {
  2.                         case 'suse' :
  3.                                 switch($version) {
  4.                                         case '10' :
  5.                                                 switch($arch) {
  6.                                                         case 'x86_64' :
  7.                                                                 return "SuSE10_x86_64";
  8.                                                                 break;


 

Code :
  1. $result=template::whoami("suse",10,"x86_64" );
  2. $template = new $result();


 
Je ne me sert peut être pas des classes de la bonne manière. J'ai peut être mal compris le principe.
 
Merci de votre aide.


Message édité par gigi12345 le 29-11-2009 à 13:23:54
Reply

Marsh Posté le 29-11-2009 à 13:00:54   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed