Wie wir schon im ersten Teil gesehen haben, kann das Singleton-Pattern recht simpel und schnell in php realisiert werden.
Nun sind wir Developer ja von Natur aus bequem und selbst wenn man copy&paste liebt, geht es einem irgendwann auf die Nerven, dass jede Klasse die das Singleton-Pattern nutzen soll immer wieder die identischen Codezeilen enthält.
Seit php5.3 und seinen neuen "late static bindings" ist es jedoch möglich, das Singleton-Pattern in einer einzigen Klasse zu definieren und alle Klassen können einfach dieses Pattern erben:
-
<?php -
abstract class Singleton {
-
// Dieses Mal als "protected", -
// damit die Kindklassen -
// einen eigenen Constructor -
// haben können -
protected function __construct() {}
-
-
// Das kennen wir schon -
final private function __clone() {}
-
-
-
// Durch die Late static Bindings -
// ist es möglich, mittels des -
// "static"-Keywords eine Instanz -
// der aufrufenden Klasse -
// zurückzuliefern! -
final static public function init() {
-
static $instance = null;
-
return $instance ?: $instance = new static;
-
} -
} -
-
class ChildSingleton extends Singleton {
-
-
// protected!! Sonst könnte man den -
// Constructor "normal" aufrufen -
protected function __construct() {
-
// Hier dann alles, was bei der Instanzierung -
// der Childklasse zu tun ist -
} -
-
} -
?>
Danach können wir die Klasse "ChildSingleton" wieder nur über ihre init-Methode instanzieren:
-
<?php -
// FATAL ERROR! -
$a = new ChildSingleton();
-
// Funktioniert: -
$a = ChildSingleton::init();
-
$b = ChildSingleton::init();
-
?>
Testen wir mal, ob alles geht...
Willkommen zum zweiten Teil meiner kleinen HowTo-Serie. Heute werde ich Euch zeigen, wie man einem Android-Handy zu einem Zugang zum OpenVPN-Server aus dem 



