Forum Clubic

{PHP} constructeur static (ou comment avoir un objet membre static)

Je désire avoir un objet Converter comme membre static de ma classe :

class MaClasse {
  private static $_statusConverter = new Converter();

  private $_name;
  private $_date;
  public function __construct() {
    //...
  }
}

Sauf que bien sûr ça n’est pas possible car je ne peux pas faire de new Class() dans le corps de la classe.
En Java il existe un concept de “constructeur statique” : la même chose existe-il en PHP5 ?

Non, pas en php5 (à voir sur php5.3 & 6)

Mais tu peux faire l’initialisation après la déclaration de ta classe. Genre MaClasse::init(); qui ferait le sale boulot pour toi.

Ah oui :clap:
J’étais justement partit pour faire le new après la déclaration de la classe mais ça forçait à avoir mon membre en public :-/

Mais faire une fonction statique init() que j’appelle derrière est encore mieux.

class MyClass {
	protected static $_var;

	public static function init() {
		self::$_var = new OtherClass();
	}
}
MyClass:init();

Voilà. Ensuite, vérifie dans la doc s’il n’y a pas mieux, car ce bousin est tout sauf bien (ta méthode est publique, donc quand on recharge la classe :/)

cf. www.php.net…

Pour ce que j’en fait ça n’est vraiment pas grave :
Je créer un Traducteur qui travaille selon un array de strings.
Sauf que ces chaînes sont spécifiques à MyClass, différentes dans MySecondClass et également dans MyOtherClass.