Zend_Config_Xml
Zend_Config_Xml ermöglicht es Entwicklern, Konfigurations-Daten in einfachen
XML-Dateien zu speichern und sie mit einer Syntax auszulesen, die dem Zugriff auf die
Eigenschaften verschachtelter Objekte entspricht. Der Name des Root-Elementes der XML-Datei
oder des Strings ist unwichtig und kann beliebig gewählt werden. Die erste Ebene der
XML-Struktur stellt die Konfigurationsdaten-Sektionen dar. Hirarchische Strukturen können
im XLM-Format durch Verschachteln von XML-Elementen unterhalb der Sektions-Ebene umgesetzt
werden. Der Inhalt eines XML-Blatt-Elementes (Leaf) ist der Wert eines
Konfigurations-Eintrages. Die Sektions-Vererbung wird durch ein spezielles Attribut namens
extends unterstützt, der Wert des Attributs entspricht dabei dem Namen der
Sektion, von der Daten geerbt werden sollen.
Rückgabe Typen
Konfigurations-Daten, die in Zend_Config_Xml eingelesen wurden, werden
immer als Strings zurück gegeben. Die Konvertierung der Daten von Strings in andere
Datentypen ist Aufgabe der Entwickler und von deren Bedürfnissen abhängig.
Zend_Config_Xml benutzen
Dieses Beispiel zeigt die grundlegende Nutzung von Zend_Config_Xml um
Konfigurations-Daten aus einem XML-File zu laden. In diesem Beispiel gibt es
Konfigurations-Daten für ein Produktiv- und ein Staging-System. Da sich die Daten für
das Staging-System nur unwesentlich von denen für das Produktiv-System unterscheiden,
erbt das Staging-System vom Produktiv-System. In diesem Fall ist die Entscheidung
darüber, welche Sektion von welcher erben soll, willkürlich und es könnte auch anders
herum gemacht werden. In komplexeren Fällen ist das möglicherweise nicht der Fall.
Nehmen wir also an, dass sich die folgenden Konfigurations-Daten in der Datei
/path/to/config.xml befinden:
www.example.com
pdo_mysql
db.example.com
dbuser
secret
dbname
dev.example.com
devuser
devsecret
]]>
Nehmen wir weiterhin an, dass der Anwendungs-Entwickler die Staging-Konfiguration aus
diesem XML-File benötigt. Es ist ein Leichtes, diese Daten zu laden, es muss nur das
XML-File und die Staging-Sektion spezifiziert werden:
database->params->host; // ausgabe "dev.example.com"
echo $config->database->params->dbname; // ausgabe "dbname"
]]>
Tag Attribute in Zend_Config_Xml verwenden
Zend_Config_Xml unterstützt auch zwei zusätzliche Wege der Definition von Knoten in der
Konfiguration. Beide verwenden Attribute. Da die extends und
value Attribute reservierte Schlüsselwörter sind (das letztere durch den zweiten
Weg der Verwendung von Attributen), können sie nicht verwendet werden. Der erste Weg
Attribute zu verwenden ist das hinzufügen von Attributen zum Elternknoten, welcher dann in einen
Kindknoten dieses Knotens übersetzt wird:
]]>
Der andere Weg verkürzt die Konfiguration nicht wirklich, macht es aber einfacher in der
Handhabung das der Tag-Name nicht zweimal geschrieben werden muß. Man erstellt einfach einen
leeren Tag, welcher seinen Wert im value Attribut enthält:
www.example.com
]]>
XML Strings
Zend_Config_Xml ist dazu in der Lage XML Strings direkt zu laden, wie z.B.
deren Empfang von einer Datenbank. Der String wird als erster Parameter an den
Konstruktor übergeben und muß mit den Zeichen '<?xml': beginnen
EOT;
$config = new Zend_Config_Xml($string, 'staging');
]]>