In letzter Zeit programmiere ich sehr oft objektorientiert auch für WordPress. Da WordPress eigentlich ein eher nicht objektorientiertes System ist, benutze ich regelmässig Singleton-Klassen. Ich habe mir dafür ein Template geschrieben, dass ich in den meisten Projekten so verwende und meine neuen Klassen nur noch davon ableiten muss.
abstract class Singleton {
protected static $m_pInstance;
final public static function singleton() {
$class = self::getClass();
if (isset(self::$m_pInstance[$class]) == false) {
self::$m_pInstance[$class] = new $class;
}
return self::$m_pInstance[$class];
}
final public static function getClass() {
return get_called_class();
}
}
Der Vollständigkeit halber so leitet man eine Klasse ab:
class Meine_Neue_Klasse extends Singleton {
...
}
Um die Instanz der Klasse zu bekommen, einfach folgendes aufrufen:
$instance = Meine_Neue_Klasse::singleton();

passend zur Überlegung:
http://gooh.posterous.com/singletons-in-php
Ich nutze fast nur OOP, auch im Team mit WP, auch Namespaces zum Teil, aber der Artikel sollte in die Überlegung bei Verwendung von Singletons einfließen und WP ist dazu kein Grund.
Ebenso sollte static überdacht werden:
static considered harmful: http://kore-nordmann.de/blog/0103_static_considered_harmful.html