Bonjour à tous,
J'ai un petit soucis en PHP5.
Je suis en train de créer une classe relativement simple. J'aimerais cependant que celle-ci puisse être instanciable via des variables ou via un fichier XML.
Je me suis alors posé la question de savoir comment faire cela, et j'ai trouvé 2 solutions :
Le première est de créer un constructeur vide puis 2 méthodes qu'on appelerait selon les besoins. Ca donnerait :
L'instanciation devrait alors se faire en 2 étapes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public function __construct() { // rien } public function init_from_var($var1,$var2) { // traitement } public function init_from_file($file) { // traitement }
La seconde solution que j'ai trouvé est d'avoir un constructeur unique et de créer une méthode statique permettant de créer une nouvelle instance de ma classe. Ca donnerait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $myvar = new Classe(); // Puis, selon le cas : $myvar->init_from_var($var1,$var2); // Ou : $myvar->init_from_file($file);
L'instanciation ne se fait plus qu'en une étape, selon le cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public function __construct($var1,$var2) { // traitement } public static function readFile($f) { //traitement return new Classe($var1,$var2); }
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // Cas où l'on instancie à partir des variables : $myvar = new Classe($var1,$var2);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // Cas où l'on instancie à partir du fichier : $myvar = Classe::readFile($f);
En cherchant sur le net (et en particulier ici), j'ai pu constater que mon idée n'est pas si débile puisque des gens ont posté exactement la même chose dans la doc PHP. (ça me rassure quelque peu sur mes capacités en PHP5 )
Cependant, j'aimerais savoir si une méthode est plus "juste" ou plus "propre" que l'autre ? Pour le moment, je suis parti sur la base d'un constructeur et d'une méthode statique. Mais j'aimerais avoir des avis de pros sur ce "soucis" de conception
Merci d'avance !
Partager