mardi 27 mai 2014

Pattern Singleton + PHP trait : une manière simple d'implémenter un design pattern récurrent

Depuis PHP 5.3.0, il est possible de faire la différence entre la classe qui contient un code statique et la classe qui exécute ce code. Ce qui rend donc l'implémentation du design pattern singleton assez simple.
Et avec PHP 5.4.0, nous avons droit aux traits. Les traits sont des bouts de code qui peuvent être réutilisés dans n'importe quelle classe. Vous trouverez ici tout ce que vous devez savoir sur les traits.

Objectif

Dans une premier temps je vais présenter (rapidement) le pattern singleton. En suite je vais décrire une méthode d'implémentation baseé sur les traits de PHP.
Attention :
Utiliser des traits pour ce genre de technique à l'avantage de ne pas bloquer l'héritage d'un objet, tout en écrivant un code complet (en opposition aux interfaces, où le code doit être recopié implémenté pour chaque classe).
Le pattern singleton est relativement simple a écrire, c'est pourquoi je trouve qu'il s'associe bien avec cette nouvelle fonctionnalité de PHP. Mais on peut rapidment écrire du code spaghetti avec le traits. C'est pourquoi je préconise de les utiliser seulement sur des comportements simples est clairs.