|
|
|
|
Bonjour à tous,
La méthode suivante qui créer une instance unique :
public function config ( $pathIni = NULL )
{
if ( is_null ( self::$_instance ) )
{
self::$_instance = new self ( $pathIni );
}
return self::$_instance;
}
Non-static method Core_Configuration_Config::config() should not be called statically, assuming $this from incompatible context, CHEMIN
Configuration: Windows Vista Firefox 3.0.11
Salut,
// tu ne fais pas $instance = new MaClasse(); // mais $instance = MaClasse::get_instance(); pour pouvoir exécuter la méthode (config() dans ton cas), il faut la déclarer "static" car ainsi elle peut être appelée sans que la classe soit instanciée ("new MaClasse()"). c'est aussi pour ça que dans la méthode tu utilises "self" et non pas "$this". + http://www.php.net/manual/fr/language.oop5.static.php [ Mathieu ] Il y a sûrement des pandas pour ne dépendre de rien |
Merci Dalida, a croire que tu m'aides souvent sur ce sujet, ça fait plaisir ;)
Ma_Class::config ( ); Beaucoup de code de prog .... Ma_Class::Autre_Mehtod_Qui_Charge_Des_Complements_De_Config ( ) Est ce que c'est bon ? |
Salut,
$singleton = Ma_Class::config( ); /* là tu instancies ton objet "singleton" c'est à dire le seul objet qui peut être instancié à partir de cette classe */ Ma_Class::Autre_Mehtod_Qui_Charge_Des_Complements_De_Config( ); /* là tu peux créer des méthodes qui modifient ton singleton */ dans ta deuxième méthode tu fais quelque chose du genre : static function :Autre_Mehtod_Qui_Charge_Des_Complements_De_Config( )
{
self::$_instance ++; /* tu agis sur le singleton, ici une simple incrémentaion */
}
et plus tard tu as à nouveau besoin de ton singleton : $singleton_ailleurs_et_plus_tard = Ma_Class::config( ); là tu retrouves ton premier singleton mais qui a été incrémenté de 1. [ Mathieu ] Il y a sûrement des pandas pour ne dépendre de rien |
je peux appeler une méthode (qui est en static elle aussi) sans refaire appel à la première instance ?
class _1
{
public function __construct ( )
{
$this->conf = Ma_Class::config ( );
}
}
class _2
{
public function __construct ( )
{
$test = Ma_Class::config ( );
$test->Autre_Mehtod_Qui_Charge_Des_Complements_De_Config ( ); /* dans le cas ou la methode n'est pas static */
}
}
new _1;
new _2;
je considère dans class _1 que j'ai besoin de la config actuellement si je dois appel mon singleton de la config je fais comme dans class _2. donc j'appel 2 fois ce code : Ma_Class::config ( ); est-ce que la fais de mettre en static :Autre_Mehtod_Qui_Charge_Des_Complements_De_Config ( ) permet de faire ceci ?
class _1
{
public function __construct ( )
{
$this->conf = Ma_Class::config ( );
}
}
class _2
{
public function __construct ( )
{
Ma_Class::Autre_Mehtod_Qui_Charge_Des_Complements_De_Config ( ); /* dans le cas ou la methode est static */
}
}
new _1;
new _2;
Ce qui permet de ne plus appeler 2 fois : Ma_Class::config ( ); Parce que j'imagine que ça prends des recouses d'appeler trop souvent le même objet. Est ce que je suis un peux plus claire ? |