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 XML
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 XML 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 einer
XML Datei 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
dieser XML Datei benötigt. Es ist ein Leichtes, diese Daten zu
laden, es muss nur die XML Datei 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');
]]>
Zend_Config XML Namespace
Zend_Config kommt mit seinem eigenen XML
Namespace, welcher zusätzliche Funktionalität beim Parsing Prozess hinzufügt. Um diese
Vorteile zu verwenden, muß ein Namespace mit der Namespace URI
http://framework.zend.com/xml/zend-config-xml/1.0/ im Root Node der
Konfiguration definiert werden.
Wenn der Namespace aktiviert ist, können PHP Konstanten in den
Konfigurationsdateien verwendet werden. Zusätzlich ist das extends
Attribut in den neuen Namespace gewandert und in im NULL Namespace
nicht mehr erlaubt. Es wird mit Zend Framework 2.0 komplett entfernt.
/library
EOT;
define('APPLICATION_PATH', dirname(__FILE__));
$config = new Zend_Config_Xml($string, 'staging');
echo $config->includePath; // Ausgabe "/var/www/something/library"
]]>