fbpx

PHP 5.3 : Le mot cle “static” : une meilleure implémentation du pattern Singleton.

php
L’un des apports structurels de PHP 5.3, en l’occurrence le “late static binding” permet d’implémenter efficacement le pattern Singleton. En effet, il y a plusieurs façons de définir une classe Singleton et de l’étendre afin de permettre d’en créer automatiquement un autre qui suit le même pattern.

La classe Singleton :

Voici un exemple d’implémentation d’une classe Singleton “générique” :

Le mot cle "static" :

Le mot clé static permet de résoudre plusieurs problèmes ayant lieu avec les anciennes versions de PHP. En effet, il est possible avec ce mot clé d'enlever du code redondant du fait qu'a l'appel de static, on utilise en fait la classe courante et non celle ou self a été utilisé. Ceci permet de référer directement a l'instance courante de la classe, celle qui étendra - dans notre exemple - la classe pattern\Singleton. Nous pourrons alors étendre a chaque fois que l'on veuille implémenter le pattern singleton, la classe abstraite en implémentant la méthode init. Par exemple :
membre2 = rand();
    }
}

/**
 * Une autre classe implemente aussi le pattern Singleton
 */
class monSingleton2 extends pattern\Singleton
{
    protected static $singleton;
}

$monInstance = monSingleton::getInstance();
$monInstance2 = monSingleton2::getInstance();
$monInstance2->variable = 'Salut';
$monInstance3 = monSingleton::getInstance();

var_dump($monInstance);
var_dump($monInstance2);
var_dump($monInstance3);
var_dump($monInstance === $monInstance3);
var_dump($monInstance !== $monInstance2);
?>

Ceci Affichera :

object(monSingleton)#2 (2) {
  ["membre1":protected]=>
  string(1) "Membre1"
  ["membre2":protected]=>
  int(31994)
}
object(monSingleton2)#3 (1) {
  ["variable"]=>
  string(5) "Salut"
}
object(monSingleton)#2 (2) {
  ["membre1":protected]=>
  string(1) "Membre1"
  ["membre2":protected]=>
  int(31994)
}
bool(true)
bool(true)

Conclusion

Le mot clé static permet d'implémenter efficacement plusieurs design patterns. En effet, PHP5.3 est l'une des meilleures releases de PHP avec plusieurs ajouts structurelles, fonctionnelles et"cosmétiques".

Anis Berejeb

Anis est avant tout un passioné de l'agilité et du développement. Avec plus de 15 ans dans le domaine du développement web, son expertise combine des connaissances accrues dans l'ensemble des notions partant du développement logiciel jusqu'à l'organisation des équipes dans les environnements agiles à grande échelle.

You may also like...