Mit Hilfe des Singleton Patterns ist es möglich ein Klasse so umzuschreiben, dass diese nur einmalig instanziiert werden kann. Die Erzeugung der Instanz erfolgt dabei nicht über nen Operator new sondern durch eine statische Methode - in den meisten Fällen getInstance().
Aber nun zu einem Beispiel.
<?php class Foo { private static $_instance = null; public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new Foo(); } return self::$_instance; } private function __construct(); private function __clone(); }
Eine kurze Erklärung zum Beispiel: Die statische Methode getInstance() prüft ob in der statischen Eigenschaft $_instance der Wert null überschrieben wurde. Sollte dies nicht der Fall sein, wird eine Instanz von sich selbst an dieser Stelle abgelegt und anschließend zurück gegeben.
Da der Inhalt der statischen Eigenschaft einen den kompletten Request erhalten bleibt, wäre dieser an einer anderen Stelle im Script bereits mit dem Objekt belegt. Sollte auch dort getInstance() ausgeführt werden, erhält man das bereits abelegte Objekt.
<?php $obj = Foo::getInstance(); ... $obj2 = Foo::getInstance(); // gibt das gleiche Objekt zurück
Die Methoden
private function __construct(); private function __clone();
sind privat um zu unterbinden, dass über die Operationen new oder clone weitere Instanzen erzeugt werden können.
Neueste Kommentare
vor 5 Wochen 4 Tage
vor 6 Wochen 1 Tag
vor 16 Wochen 11 Minuten
vor 16 Wochen 1 Tag
vor 25 Wochen 6 Tage
vor 26 Wochen 12 Minuten
vor 33 Wochen 3 Tage
vor 33 Wochen 3 Tage
vor 36 Wochen 5 Tage
vor 37 Wochen 2 Tage