Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Exemple de singleton en PHP

Article posté le 30-04-2011 dans la catégorie PHP

Article mis à jour le : 05-05-2022

Un petit exemple de singleton en PHP

Voici comment réaliser le plus simplement possible un singleton. Pour rappel un singleton est une classe qui ne peut être instanciée qu'une seule fois. Elle sert à servir une ressource unique, et présente l'avantage de ne pas à avoir à en garder la trace puisqu'elle est accessible dans toute l'application.

Elle est donc, d'un point de vue de la réflexion, différente du classe statique.

<?php
// Un singleton est une classe qui ne peut être instanciée qu'une seule fois.
// Le but est donc de n'obtenir qu'une seule instance de la classe (J'insiste!!!)
// On privatise donc son constructeur et sa méthode clone
// Et on utilise une méthode static pour récuperer l'instance
// Les singleton sont utilisés pour des ressources qui ne doivent donc
// pas être dupliquées, ex une connexion BDD. Ils présentent l'avantage du fait que l'on puisse
// les appeler n'importe quand et que l'on ait pas besoin de garder une trace d'eux.
// Il est intéressant de noter que dans bien des cas, on crée des Singletons pour des classes outils, 
// alors que dans ces cas-là une classe statique aurait fait l'affaire:
//class JeSuisStatic {
//    public static function Hello() {
//        echo "Bonjour";
//    }
//}
class Singleton {
    
    private static $compteur = 0;
    private static $instance = null;
    
    private function __construct() {
        
    }
    
    private function __clone() {
        
    }
    
    public static function getInstance() {
        
        if(self::$compteur == 0) {
            self::$instance = new Singleton(); // ou new self();
            self::$compteur++;
        }
        
        return self::$instance;
        
    }
    
    public function disBonjour() {
        echo "Bonjour";
    }
    
}

Exemple d'appel:

echo Singleton::getInstance()->disBonjour(); 

Cet article vous a plu? Découvrez d'autres articles :


comments powered by Disqus