|
|
@@ -1,8 +1,9 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
-<!-- EN-Revision: 15848 -->
|
|
|
+<!-- EN-Revision: 15978 -->
|
|
|
<!-- Reviewed: no -->
|
|
|
<sect1 id="zend.config.theory_of_operation">
|
|
|
<title>Theory of Operation</title>
|
|
|
+
|
|
|
<para>
|
|
|
Konfigurations-Daten werden dem <classname>Zend_Config</classname>-Konstruktor als
|
|
|
assoziatives Array zur Verfügung gestellt. Das Array kann mehrdimensional sein, um die
|
|
|
@@ -12,6 +13,7 @@
|
|
|
Arrays an den <classname>Zend_Config</classname>-Konstruktor übergeben werden, ohne eine
|
|
|
Adapter-Klasse zu benutzen. In manchen Situationen kann das angebracht sein.
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
Jeder Konfigurationswert des Arrays wird zu einer Eigenschaft des
|
|
|
<classname>Zend_Config</classname> Objektes. Der Schlüssel wird als Name der Eigenschaft
|
|
|
@@ -20,72 +22,82 @@
|
|
|
Array Daten geladen. Das findet rekursiv statt, sodas hirarchische Konfigurationswerte mit
|
|
|
einer beliebigen Anzahl an Level erstellt werden können.
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
- <classname>Zend_Config</classname> implementiert die Interfaces <code>Countable</code> und
|
|
|
- <code>Iterator</code> um den einfachen Zugriff auf Konfigurationsdaten zu gewährleisten.
|
|
|
- Dementsprechend kann man die <ulink
|
|
|
- url="http://php.net/count"><code>count()</code></ulink>-Funktion und auch PHP-Konstrukte
|
|
|
- wie <ulink url="http://php.net/foreach"><code>foreach</code></ulink> auf
|
|
|
+ <classname>Zend_Config</classname> implementiert die Interfaces
|
|
|
+ <emphasis>Countable</emphasis> und <emphasis>Iterator</emphasis> um den einfachen Zugriff
|
|
|
+ auf Konfigurationsdaten zu gewährleisten. Dementsprechend kann man die <ulink
|
|
|
+ url="http://php.net/count"><methodname>count()</methodname></ulink>-Funktion und auch
|
|
|
+ <acronym>PHP</acronym> Konstrukte wie <ulink
|
|
|
+ url="http://php.net/foreach"><emphasis>foreach</emphasis></ulink> auf
|
|
|
<classname>Zend_Config</classname>-Objekte anwenden.
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
Standardmäßig gewährt <classname>Zend_Config</classname> nur Lesezugriff auf die Daten und
|
|
|
- der Versuch einer Wertzuweisung (wie z. B. <code>$config->database->host =
|
|
|
- 'example.com';</code>) löst eine Ausnahme aus. Dieses Standard-Verhalten kann mit Hilfe des
|
|
|
+ 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 <classname>Zend_Config</classname> das entfernen
|
|
|
- von Werten (z.B. <code>unset($config->database->host);</code>). Die <code>readOnly()</code>
|
|
|
- Methode kann verwendet werden um festzustellen ob Änderungen an einem gegebenen
|
|
|
- <classname>Zend_Config</classname> Objekt erlaubt sind und die <code>setReadOnly()</code>
|
|
|
- kann verwendet werden um weitere Änderungen an einem <classname>Zend_Config</classname>
|
|
|
- Objekt, das erstellt wurde und Änderungen erlaubt, zu verhindern.
|
|
|
-
|
|
|
- <note>
|
|
|
- <para>
|
|
|
- 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 <classname>Zend_Config</classname>. Drittanbieter bieten
|
|
|
- bereits diverse Open-Source-Lösungen für das Erstellen und Verändern von
|
|
|
- Konfigurations-Datensätzen in verschienen Formaten.
|
|
|
- </para>
|
|
|
- </note>
|
|
|
+ von Werten (z.B. <methodname>unset($config->database->host);</methodname>). Die
|
|
|
+ <methodname>readOnly()</methodname> Methode kann verwendet werden um festzustellen ob
|
|
|
+ Änderungen an einem gegebenen <classname>Zend_Config</classname> Objekt erlaubt sind und
|
|
|
+ die <methodname>setReadOnly()</methodname> kann verwendet werden um weitere Änderungen an
|
|
|
+ einem <classname>Zend_Config</classname> Objekt, das erstellt wurde und Änderungen erlaubt,
|
|
|
+ zu verhindern.
|
|
|
</para>
|
|
|
+
|
|
|
+ <note>
|
|
|
+ <para>
|
|
|
+ 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 <classname>Zend_Config</classname>. Drittanbieter bieten
|
|
|
+ bereits diverse Open-Source-Lösungen für das Erstellen und Verändern von
|
|
|
+ Konfigurations-Datensätzen in verschienen Formaten.
|
|
|
+ </para>
|
|
|
+ </note>
|
|
|
+
|
|
|
<para>
|
|
|
Adapter-Klassen erben von der <classname>Zend_Config</classname>-Klasse, da sie ihre
|
|
|
Funktionalität nutzen.
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
Die Familie der <classname>Zend_Config</classname>-Klassen ermöglicht es, Daten in Sektionen
|
|
|
einzuteilen. Beim Initialisieren eines <classname>Zend_Config</classname>-Adapter-Objektes
|
|
|
können eine einzelne spezifizierte Sektion, mehrere spezifizierte Sektionen oder alle
|
|
|
Sektionen (wenn keine spezifiziert ist) geladen werden.
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
Die <classname>Zend_Config</classname>-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.
|
|
|
+ in <acronym>PHP</acronym> 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.
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
Wenn zwei <classname>Zend_Config</classname> Objekte vorhanden sind, können diese in ein
|
|
|
- einzelnes Objekt zusammengeführt werden indem die <code>merge()</code> Funktion verwendet
|
|
|
- wird. Angenommen es gibt <varname>$config</varname> und <varname>$localConfig</varname>,
|
|
|
- kann <varname>$localConfig</varname> in <varname>$config</varname> zusammengeführt werden
|
|
|
- indem <code>$config->merge($localConfig);</code> aufgerufen wird. Die Elemente in
|
|
|
+ einzelnes Objekt zusammengeführt werden indem die <methodname>merge()</methodname> Funktion
|
|
|
+ verwendet wird. Angenommen es gibt <varname>$config</varname> und
|
|
|
+ <varname>$localConfig</varname>, kann <varname>$localConfig</varname> in
|
|
|
+ <varname>$config</varname> zusammengeführt werden indem
|
|
|
+ <methodname>$config->merge($localConfig);</methodname> aufgerufen wird. Die Elemente in
|
|
|
<varname>$localConfig</varname> überschreiben gleichnamige Elemente in
|
|
|
<varname>$config</varname>.
|
|
|
<note>
|
|
|
<para>
|
|
|
- Das <classname>Zend_Config</classname> Objekt das die Zusammenführung durchführt muß
|
|
|
- so erstellt worden sein das es Änderungen erlaubt, indem dem Constructor
|
|
|
+ Das <classname>Zend_Config</classname> Objekt das die Zusammenführung durchführt
|
|
|
+ muß so erstellt worden sein das es Änderungen erlaubt, indem dem Constructor
|
|
|
<constant>TRUE</constant> als zweiter Parameter übergeben wird. Die
|
|
|
- <code>setReadOnly()</code> Methode kann dann verwendet werden um weitere Änderungen
|
|
|
- zu verhindern nachdem die Zusammenführung fertiggestellt ist.
|
|
|
+ <methodname>setReadOnly()</methodname> Methode kann dann verwendet werden um
|
|
|
+ weitere Änderungen zu verhindern nachdem die Zusammenführung fertiggestellt ist.
|
|
|
</para>
|
|
|
</note>
|
|
|
</para>
|