Design Patterns : singleton

PHP Ajouter un commentaire

Restons un peu dans les objets avec les modèles de conception, ou Design Patterns. Nous allons commencer avec un des grands classiques : le singleton. Ce modèle très pratique permet de créer 1 instance maximum d’un objet. On utilise pour cela une variable et une méthode statiques, en rendant le constructeur privé.

Un des grands cas pratiques est l’utilisation pour une connexion à la base de données : cela évite de se connecter 50 fois, on reprend la connexion ouverte.


Voici en PHP 5 ce que cela donne :

class Database
{
 	private static $instance = NULL;
 
	private function __construct()
 	{
 		// Initialiser la connexion ici
 	}
 
 	public static function getSingleton()
 	{
 		if (self::$instance == NULL) {
 			self::$instance = new Database();
 		}
 
 		return self::$instance;
 	}
}

L’instance de l’objet est à chaque fois appelée à l’aide de Database::getSingleton(). La création de l’instance n’est fait qu’au premier appel. En PHP 4, le modèle objet archaïque permet grâce à un tour de passe-passe de recréer à peu près le fonctionnement d’un singleton :

class Database
{
 	function Database()
 	{
 		// Initialiser la connexion ici
 	}
 
 	function getSingleton()
 	{
 		static $instance = NULL;
 
 		if ($instance == NULL) {
 			$instance = new Database();
 		}
 
 		return $instance;
 	}
}

L’absence de portée des variables et méthodes dans les classes vous permet d’instancier autant de fois que vous voulez la classe. On demande donc au programmeur d’etre rigoureux, pas au code…

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in