Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Programmation.php

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

Posté par Hardy Damien (page perso, ) le 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

> Lire le message (2 commentaires, moyenne: 1).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

gruik

Posté par duaner () le 28/08/2006 à 17:10. (lien). É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 Hardy Damien (page perso, ) le 29/08/2006 à 15:50. (lien). É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

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.php