Forum Programmation.php "sur spécification" d'un objet

Posté par  .
Étiquettes : aucune
0
28
août
2006
Bonjour,

Une petit question POO.
Est ce qu'il est possible en POO et plus particulièrement en PHP

de retourner une sous classe d'une classe lors de l'instenciation de celle-ci en fonction de critères prédéfinis (un contexte par exemple)

$context = je_vais_dans_un_chenil();
$animal = new Animal();

et là paf ! $animal est une instance de Chien (qui est une sous classe d'Animal )

P.e. en passant par une "factory" comme en XUL ?

Dam
  • # gruik

    Posté par  . Évalué à 1.


    abstract class Animal {

    private function __construct(){}
    public static function create ($options=array()) {
    global $context;
    if(!class_exists($context)) {
    throw new Exception("Cette classe n'existe pas");
    }

    return new $context($options);
    }

    }



    -> $genre = 'chien'; $animal = Animal::create();


    Seulement ca serait peut etre moins gruik de passer $context a create($context, $options = array()) et d'appeler Animal::create('chien');
    • [^] # Re: gruik

      Posté par  . Évalué à 1.

      Hmm ok je vois ce que tu veux dire. obligé de passer par une methode static (donc on rejoint la notion de "factory" que j'ai évoqué)


      Pour l'aspect gruik, j'entendais par "contexte" n'importe quoi : le temps qu'il fait, l'heure, l'age du capitaine. ça me parrait difficile de tout prévoir depuis le script utilisateur pour passer le bon parametre au constructeur. (j'ai simplifié dans l'exemple bien sur).

      merci pour ton éclairage en tout cas.

      Dam

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.