k wie klaus -)
von Singleton ableiten?
Einklappen
X
-
$instance als protected deklarieren und getInstantce() überladen - das sollte funktionieren.
PHP-Code:class Singleton {
protected static $instance;
public static function getInstance() {}
}
class ExtendedSingleton extends Singleton {
public static function getInstance() {
if (null === self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
}
$obj = ExtendedSingleton::getInstance();
Kommentar
-
Original geschrieben von onemorenerd
$instance als protected deklarieren und getInstantce() überladen - das sollte funktionieren.
PHP-Code:class Singleton {
protected static $instance;
public static function getInstance() {}
}
class ExtendedSingleton extends Singleton {
public static function getInstance() {
if (null === self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
}
$obj = ExtendedSingleton::getInstance();
PHP-Code:abstract class Singleton
{
private $_instances = array();
// simple Implementierung
public static function get_instance($class_name)
{
if (!isset(self::$_instances[$class_name]))
{
$object = new $class_name();
if ($object instanceof Singleton)
{
self::$_instances[$class_name] = $object;
}
}
return self::$_instances[$class_name];
}
}
Kommentar
-
25 Singletons ist (sorry) irre!
In einem solchen Fall schreit es nach dem "Registry Design Pattern". (Dieses eine darf dann Singleton sein)
Und nein, Singeletons sind kein feines Pattern, sie vereinfachen einiges, machen aber die Vererbung kaputt. Zumindest so kaputt, das man sich mehr mit diesem überflüssigen Problem beschäftigen muß als nötig.
aber das gilt wohl für die meisten selbst gelegten Eier
Zuletzt geändert von combie; 03.01.2008, 21:41.
Kommentar
-
So oder so Murkserei...
Die Singleton-Funktionalität sollte nicht durch Ableitung in die Klasse gebracht werden müssen~ aber was anderes bleibt einem bei PHP ja nicht übrig...
Theoretisch sollte es eher ein Mixin sein, so wie es bei Ruby auch gemacht wird:
http://home.vrweb.de/~juergen.katins...html#sec:mixin
http://www.ruby-doc.org/stdlib/libdo...doc/index.html
Dementsprechend ist das glaub ich ziemlich egal, wie ihr euch die Theorie kaputt macht, Hauptsache es funktioniert einwandfrei und einfach...
Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!
bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
Wie man Fragen richtig stellt
Kommentar
Kommentar