Das Registry Pattern wird sehr oft eingesetzt, um globale Variablen im Context mehrerer Objekte zu vermeiden. Stellen wir uns dieses Entwurfsmuster einfach als eine Art Datenspeicher vor.
Da es sinnvoll ist, hier ein Singleton zu benutzen, um sicherzustellen, dass alle Objekte auf den gleichen Datenspeicher zugreifen, werden wir das Singleton aus Teil2 wieder "erben" und um uns wieder ein wenig Tipparbeit zu ersparen, nutzen wir die Überladung in php:
-
<?php -
abstract class Singleton {
-
protected function __construct() {}
-
final private function __clone() {}
-
final static public function init() {
-
static $instance = null;
-
return $instance ?: $instance = new static;
-
} -
} -
-
class Registry extends Singleton {
-
-
// Unsere gespeicherten Daten: -
protected $__data = NULL;
-
-
// Der Konstruktor, wird über den vererbten -
// init-Aufruf des Singleton aufgegrufen -
protected __contruct() {
-
// was auch immer hier getan werden muss -
} -
-
// Nun nutzen wir die überladenen Standardmethoden: -
-
// Der überladene Setter -
public function __set($strPropertyName, $mixedValue) {
-
$this->__data[$strPropertyName] = $mixedValue;
-
} -
-
// Der Getter -
public function __get($strPropertyName) {
-
return isset($this->__data[$strPropertyName]) ? $this->__data[$strPropertyName] : NULL;
-
} -
-
// Pruefen ob eine Property gesetzt ist: -
public function __isset($strPropertyName) {
-
return isset($this->__data[$strPropertyName]);
-
} -
-
// Einen Wert aus der Registry loeschen: -
public function __unset($strPropertyName) {
-
// Die isset-Klausel vermeidet Notices... -
if isset($this->__data[$strPropertyName]) unset($this->__data[$strPropertyName]);
-
} -
} -
?>
Nun können wir das Registry von überall nutzen:
Im nächsten Teil werden wir das Factory-Pattern kennenlernen.
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 



