Programmer's Reference Guide
| Zend_Config_Ini |
Zend_Config_Xml
Zend_Config_Xml permet aux développeurs de stocker des données de configuration dans un format
simple XML et de les lire grâce à une syntaxe de propriétés d'objets imbriquées. Le nom de l'élément racine du
fichier XML n'a pas d'importance et peut être nommé arbitrairement. Le premier niveau des éléments XML correspond
aux sections des données de configuration. Le format XML supporte l'organisation hiérarchique par l'emboîtement des
éléments XML à l'intérieur des éléments de niveau section. Le contenu d'un élément XML de niveau le plus bas
correspond aux données de configuration. L'héritage des sections est supportée par un attribut spécial de XML nommé
extends, et la valeur de cet attribut correspond à la section de laquelle des données doivent être
héritées.
Note: Type retourné
Les données de configuration lues grâce àZend_Config_Xmlsont toujours des chaînes de caractères (string). La conversion des données à partir des chaînes de caractères vers d'autres types de données est laissée aux développeurs en fonction de leurs besoins.
Exemple #1 Utiliser Zend_Config_Xml
Cet exemple illustre une utilisation de base de Zend_Config_Xml pour le chargement des
données de configuration à partir d'un fichier XML. Dans cet exemple il y a des données de configuration pour un
environnement de production et pour un environnement de test. Puisque les données de configuration de
l'environnement de test sont très semblables à celles de la production, la section de test hérite de la section
de production. Dans ce cas, la décision est arbitraire et pourrait avoir été écrite réciproquement, avec la
section de production héritant de la section de test, bien que ceci ne doit pas être le cas pour des situations
plus complexes. Supposons, que les données suivantes de configuration sont contenues dans
/chemin/vers/config.xml :
<?xml version="1.0"?>
<configdata>
<production>
<webhost>www.example.com</webhost>
<database>
<adapter>pdo_mysql</adapter>
<params>
<host>db.example.com</host>
<username>dbuser</username>
<password>secret</password>
<dbname>dbname</dbname>
</params>
</database>
</production>
<test extends="production">
<database>
<params>
<host>dev.example.com</host>
<username>devuser</username>
<password>devsecret</password>
</params>
</database>
</test>
</configdata>
Ensuite, supposons que le développeur a besoin des données de configuration de test issues du fichier XML. Il est facile de charger ces données en indiquant le fichier XML et la section de test :
$config = new Zend_Config_Xml('/chemin/vers/config.xml', 'test');
echo $config->database->params->host; // affiche "dev.example.com"
echo $config->database->params->dbname; // affiche "dbname"
Exemple #2 Utilisation des attributs de balise avec Zend_Config_Xml
Zend_Config_Xml supporte aussi 2 autres manières de définir des noeuds dans la configuration.
Celles-ci utilisent les attributs de balises. Puisque les attributs extends et value
sont des mots réservés (ce dernier par la seconde manière d'utiliser les attributs), ils ne doivent pas être
utilisés. La première manière d'utiliser les attributs est de les ajouter au noeud parent, ils seront ainsi
interprétés en tant qu'enfant de ce noeud :
<?xml version="1.0"?>
<configdata>
<production webhost="www.example.com">
<database adapter="pdo_mysql">
<params host="db.example.com" username="dbuser" password="secret" dbname="dbname"/>
</database>
</production>
<staging extends="production">
<database>
<params host="dev.example.com" username="devuser" password="devsecret"/>
</database>
</staging>
</configdata>
La seconde manière ne permet pas vraiment de raccourcir la configuration, mais la rend plus facile à
maintenir puisque vous n'avez pas à écrire les noms de balises deux fois. Vous créez simplement une balise vide
qui contient sa valeur à l'intérieur l'attribut value :
<?xml version="1.0"?>
<configdata>
<production>
<webhost>www.example.com</webhost>
<database>
<adapter value="pdo_mysql"/>
<params>
<host value="db.example.com"/>
<username value="dbuser"/>
<password value="secret"/>
<dbname value="dbname"/>
</params>
</database>
</production>
<staging extends="production">
<database>
<params>
<host value="dev.example.com"/>
<username value="devuser"/>
<password value="devsecret"/>
</params>
</database>
</staging>
</configdata>
| Zend_Config_Ini |
