Programmer's Reference Guide
| Einleitung |
Theory of Operation
Konfigurations-Daten werden dem Zend_Config-Konstruktor als assoziatives Array zur Verfügung gestellt. Das Array kann mehrdimensional sein, um die Übergabe geordneter Daten zu unterstützen. Spezifische Adapter fungieren als Schnittstelle zwischen der Datenhaltung und dem Zend_Config-Konstruktor, indem sie die Daten für diesen als Array aufbereiten. Es können auch direkt aus dem eigenen Code Arrays an den Zend_Config-Konstruktor übergeben werden, ohne eine Adapter-Klasse zu benutzen. In manchen Situationen kann das angebracht sein.
Jeder Konfigurationswert des Arrays wird zu einer Eigenschaft des Zend_Config Objektes. Der Schlüssel wird als Name der Eigenschaft verwendet. Wenn ein Wert selbst ein Array ist, wird die resultierende Eigenschaft des Objektes selbst als ein neues Zend_Config Objekt erstellt und mit den Array Daten geladen. Das findet rekursiv statt, sodas hirarchische Konfigurationswerte mit einer beliebigen Anzahl an Level erstellt werden können.
Zend_Config implementiert die Interfaces Countable und
Iterator um den einfachen Zugriff auf Konfigurationsdaten zu gewährleisten.
Dementsprechend kann man die » count()-Funktion und auch PHP-Konstrukte
wie » foreach auf
Zend_Config-Objekte anwenden.
Standardmäßig gewährt Zend_Config nur Lesezugriff auf die Daten und
der Versuch einer Wertzuweisung (wie z. B. $config->database->host =
'example.com';) löst eine Ausnahme aus. Dieses Standard-Verhalten kann mit Hilfe des
Konstruktors aber so überschrieben werden, dass die Veränderung von Daten erlaubt ist. Wenn
auch Änderungen erlaubt sind, unterstützt Zend_Config das entfernen
von Werten (z.B. unset($config->database->host);). Die readOnly()
Methode kann verwendet werden um festzustellen ob Änderungen an einem gegebenen
Zend_Config Objekt erlaubt sind und die setReadOnly()
kann verwendet werden um weitere Änderungen an einem Zend_Config
Objekt, das erstellt wurde und Änderungen erlaubt, zu verhindern.
Hinweis: Es muss angemerkt werden, dass hierbei nur die Daten im Speicher verändert werden. Es wird keine Änderung an den Konfigurations-Daten auf dem Speichermedium vorgenommen. Werkzeuge zur Veränderung gespeicherter Konfigurations-Daten liegen nicht im Bereich von Zend_Config. Drittanbieter bieten bereits diverse Open-Source-Lösungen für das Erstellen und Verändern von Konfigurations-Datensätzen in verschienen Formaten.
Adapter-Klassen erben von der Zend_Config-Klasse, da sie ihre Funktionalität nutzen.
Die Familie der Zend_Config-Klassen ermöglicht es, Daten in Sektionen einzuteilen. Beim Initialisieren eines Zend_Config-Adapter-Objektes können eine einzelne spezifizierte Sektion, mehrere spezifizierte Sektionen oder alle Sektionen (wenn keine spezifiziert ist) geladen werden.
Die Zend_Config-Adapter-Klassen unterstützen ein Modell einfacher Vererbung, welches es ermöglicht, dass Konfigurations-Daten aus einer Sektion an eine Andere vererbt werden können. Dadurch kann die Notwendigeit doppelter Konfigurations-Daten für verschiedene Einsatzgebiete reduziert oder beseitigt werden. Eine erbende Sektion kann die von der Eltern-Sektion geerbten Werte auch überschreiben. Wie auch bei der Klassen-Vererbung in PHP kann eine Sektion von einer Eltern-Sektion geerbt werden, die wiederum von einer Großeltern-Sektion geerbt hat und so weiter. Mehrfaches Erben (Beispielsweise der Fall, dass Sektion C direkt von den Eltern-Sektionen A und B erbt) wird dagegen nicht unterstützt.
Wenn zwei Zend_Config Objekte vorhanden sind, können diese in ein
einzelnes Objekt zusammengeführt werden indem die merge() Funktion verwendet
wird. Angenommen es gibt $config und $localConfig, kann
$localConfig in $config zusammengeführt werden indem
$config->merge($localConfig); aufgerufen wird. Die Elemente in
$localConfig überschreiben gleichnamige Elemente in $config.
Hinweis: Das Zend_Config Objekt das die Zusammenführung durchführt muß so erstellt worden sein das es Änderungen erlaubt, indem dem Constructor
trueals zweiter Parameter übergeben wird. DiesetReadOnly()Methode kann dann verwendet werden um weitere Änderungen zu verhindern nachdem die Zusammenführung fertiggestellt ist.
| Einleitung |
