
Hoffman-Singleton
Das Singleton Design-Pattern erlaubt immer nur eine Instanz eines Objektes. Die Instanz wird nicht mehr per new erzeugt, sondern über eine Methode (GetInstance()) angefordert. Die Rückgabe ist dann eine neue Instanz (erster Aufruf) oder die bereits bestehende Instanz (spätere Aufrufe).
In PHP sieht eine minimale Singleton-Implementierung wie folgt aus:
Zu beachten ist, dass der Konstruktur und die Klonmethode als protected oder private (je nachdem ob eine weitere Vererbung erlaubt werden soll) deklariert sein müssen, damit niemand von Aussen doch mehrere Objekte erstellen oder kopieren kann. Zusätzlich ist zu beachten, dass die Instanzvariable und die Methode für das Erzeugen einer Instaz (GetInstance()) als static deklariert sind,. damit diese auch ohne konkrete Instaz zugreifbar sind.
Neu sind nun alle Basisobjekte als Singletons implementiert, wodurch beim Erstellen neuer Instanzen eines Objektes die lästige Übergabe bereits bestehender Instanzen anderer Obejekte (Dependency Injection) entfällt. Ebenefalls hat sich die Implementierung von Page- und Featurestyles vereinfacht, da nicht mehr über globale Variablen auf bereits bestehende Objekte zugeriffen werden muss, sonder immer eine Instanz der gewünschten Objekte geholt werden kann.
Um die Implementation von Featurestyles weiter zu vereinfachen, erstellt die Basisklasse für Featurestyles (FEATURESTYLEFRONTEND), von welcher die eigenen Featuerstyles abgeleitet werden, bereits alle benötigten Instanzen.
Folgendes Beispiel zeigt die Ausgabe von einfachen Newseinträgen, die über Includes beliebig viele Bilder angehängt haben. Der Zugriff auf die Includes über eine Instanz des Featureobjektes (Zeile 8) ist dabei sehr einfach: