Instanciation de classe, Votre avis sur une astuce éventuellement utile

Eléphant du PHP | 59 Messages

21 févr. 2008, 01:25

Bonjour,

J'ai remarqué que pendant les phases de développement je perds pas mal de temps lorsque je dois changer les paramètres d'instanciation des classes quand c'est paramètres son assez nombreux et surtout quand certains sont optionnels à la fin.

J'avais donc commencé à faire les choses plutôt de la façon suivante:
$MyExemple=new HExemple();
$MyExemple->param1=1;
$MyExemple->param2=2;
$MyExemple->param3=3;
Mais je perdais la possibilité de retoucher les paramètres lors de l'instanciation.

J'ai donc cherché une technique qui me permette à la fois de conserver cette façon d'écrire et
et quand même, de travailler sur les paramètres lors de l'instanciation.

Je suis arrivé à ça:
class HConfig{}

class HLib{
	function ImportConfig(&$HConfig){
		foreach($HConfig as $k => $v){
			$this->$k=&$HConfig->$k;
		}
	}
}

class HExemple extends HLib{

	var $param1;
	var $param2;
	var $param3;

	function HExemple(&$HConfig){
		$this->ImportConfig($HConfig);

		//...
	}

}

$MyExemple=new HConfig;
$MyExemple->param1=1;
$MyExemple->param2=2;
$MyExemple->param3=3;
$MyExemple=new HExemple($MyExemple);
Moi je trouve ça assez clean et pratique par rapport à ce que je cherchais mais il y a peut être des inconvénients dont je me rends pas très bien compte.

J'aimerai savoir ce que vous en pensez, est ce que c'est absurde ou bizarre de faire ça comme ça à votre avis?

J.DiMalta

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

21 févr. 2008, 21:10

Moi je préfère comme ça :
class MyExemple {

    var $param1;
    var $param2;
    var $param3;

    function MyExemple ($param1=null, $param2=null, $param3=null) { //params facultatifs
        $this->param1 = $param1;
        $this->param2 = $param2;
        $this->param3 = $param3;      
     
        //...
    }

}

//Différentes instanciations selon la disponibilité des paramètres
$MyExemple1 = new MyExemple (1, 2, 3); 
$MyExemple2 = new MyExemple (1, 2);
$MyExemple3 = new MyExemple (1); 
$MyExemple4 = new MyExemple (); 
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène