Entwurfsmuster Singleton

Das Entwurfsmuster Singleton in PHP. Dieses Muster kommt dann zum Einsatz wenn von einer Klasse nur eine Instanz existieren soll.

Dazu werden die Erzeugungs- und Kopieroperationen für den öffentlichen Zugriff gesperrt und eine extra Operation (getInstance()) angelegt die das Objekt anschließen instantiiert. In einer statischen Variablen ($_theInstance) wird die Referenz auf das Objekt gespeichert, bei einen weiteren Aufruf der Operation (getInstance()) wird nur die Referenz zurück gegeben.

final class Singleton {
	static private $_theInstance = null;
	
	private function __construct(){}
	private function __clone(){}
	
	static public function getInstance(){
		if(is_null(self::$_theInstance))self::$_theInstance = new self();
		return self::$_theInstance;
	}
	
	public function example(){
		return 'Foo Bar';
	}
}

// fatal error
// $foo = new Singleton();

$foo = Singleton::getInstance();
echo $foo->example();
// Foo Bar