Zend_Config_Xml.xml 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 15617 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.config.adapters.xml">
  5. <title>Zend_Config_Xml</title>
  6. <para>
  7. <classname>Zend_Config_Xml</classname> permet aux développeurs de stocker des données de
  8. configuration dans un format simple XML et de les lire grâce à une syntaxe de propriétés
  9. d'objets imbriquées. Le nom de l'élément racine du fichier XML n'a pas d'importance et peut
  10. être nommé arbitrairement. Le premier niveau des éléments XML correspond aux sections des
  11. données de configuration. Le format XML supporte l'organisation hiérarchique par
  12. l'emboîtement des éléments XML à l'intérieur des éléments de niveau section. Le contenu
  13. d'un élément XML de niveau le plus bas correspond aux données de configuration. L'héritage
  14. des sections est supportée par un attribut spécial de XML nommé <code>extends</code>, et la
  15. valeur de cet attribut correspond à la section de laquelle des données doivent être
  16. héritées.
  17. </para>
  18. <note>
  19. <title>Type retourné</title>
  20. <para>
  21. Les données de configuration lues grâce à <classname>Zend_Config_Xml</classname> sont
  22. toujours des chaînes de caractères (<code>string</code>). La conversion des données à
  23. partir des chaînes de caractères vers d'autres types de données est laissée aux
  24. développeurs en fonction de leurs besoins.
  25. </para>
  26. </note>
  27. <example id="zend.config.adapters.xml.example.using">
  28. <title>Utiliser Zend_Config_Xml</title>
  29. <para>
  30. Cet exemple illustre une utilisation de base de <classname>Zend_Config_Xml</classname>
  31. pour le chargement des données de configuration à partir d'un fichier XML. Dans cet
  32. exemple il y a des données de configuration pour un environnement de production et pour
  33. un environnement de test. Puisque les données de configuration de l'environnement de
  34. test sont très semblables à celles de la production, la section de test hérite de la
  35. section de production. Dans ce cas, la décision est arbitraire et pourrait avoir été
  36. écrite réciproquement, avec la section de production héritant de la section de test,
  37. bien que ceci ne doit pas être le cas pour des situations plus complexes. Supposons,
  38. que les données suivantes de configuration sont contenues dans
  39. <filename>/chemin/vers/config.xml</filename>&#160;:
  40. </para>
  41. <programlisting language="xml"><![CDATA[
  42. <?xml version="1.0"?>
  43. <configdata>
  44. <production>
  45. <webhost>www.example.com</webhost>
  46. <database>
  47. <adapter>pdo_mysql</adapter>
  48. <params>
  49. <host>db.example.com</host>
  50. <username>dbuser</username>
  51. <password>secret</password>
  52. <dbname>dbname</dbname>
  53. </params>
  54. </database>
  55. </production>
  56. <test extends="production">
  57. <database>
  58. <params>
  59. <host>dev.example.com</host>
  60. <username>devuser</username>
  61. <password>devsecret</password>
  62. </params>
  63. </database>
  64. </test>
  65. </configdata>
  66. ]]></programlisting>
  67. <para>
  68. Ensuite, supposons que le développeur a besoin des données de configuration de
  69. test issues du fichier XML. Il est facile de charger ces données en indiquant le
  70. fichier XML et la section de test&#160;:
  71. </para>
  72. <programlisting language="php"><![CDATA[
  73. $config = new Zend_Config_Xml('/chemin/vers/config.xml', 'test');
  74. echo $config->database->params->host; // affiche "dev.example.com"
  75. echo $config->database->params->dbname; // affiche "dbname"
  76. ]]></programlisting>
  77. </example>
  78. <example id="zend.config.adapters.xml.example.attributes">
  79. <title>Utilisation des attributs de balise avec Zend_Config_Xml</title>
  80. <para>
  81. <classname>Zend_Config_Xml</classname> supporte aussi 2 autres manières de définir des
  82. noeuds dans la configuration. Celles-ci utilisent les attributs de balises. Puisque les
  83. attributs <code>extends</code> et <code>value</code> sont des mots réservés (ce dernier
  84. par la seconde manière d'utiliser les attributs), ils ne doivent pas être utilisés. La
  85. première manière d'utiliser les attributs est de les ajouter au noeud parent, ils
  86. seront ainsi interprétés en tant qu'enfant de ce noeud&#160;:
  87. </para>
  88. <programlisting language="xml"><![CDATA[
  89. <?xml version="1.0"?>
  90. <configdata>
  91. <production webhost="www.example.com">
  92. <database adapter="pdo_mysql">
  93. <params host="db.example.com"
  94. username="dbuser"
  95. password="secret"
  96. dbname="dbname"/>
  97. </database>
  98. </production>
  99. <staging extends="production">
  100. <database>
  101. <params host="dev.example.com"
  102. username="devuser"
  103. password="devsecret"/>
  104. </database>
  105. </staging>
  106. </configdata>
  107. ]]></programlisting>
  108. <para>
  109. La seconde manière ne permet pas vraiment de raccourcir la configuration, mais la
  110. rend plus facile à maintenir puisque vous n'avez pas à écrire les noms de balises deux
  111. fois. Vous créez simplement une balise vide ayant sa valeur dans
  112. <code>value</code>&#160;:
  113. </para>
  114. <programlisting language="xml"><![CDATA[
  115. <?xml version="1.0"?>
  116. <configdata>
  117. <production>
  118. <webhost>www.example.com</webhost>
  119. <database>
  120. <adapter value="pdo_mysql"/>
  121. <params>
  122. <host value="db.example.com"/>
  123. <username value="dbuser"/>
  124. <password value="secret"/>
  125. <dbname value="dbname"/>
  126. </params>
  127. </database>
  128. </production>
  129. <staging extends="production">
  130. <database>
  131. <params>
  132. <host value="dev.example.com"/>
  133. <username value="devuser"/>
  134. <password value="devsecret"/>
  135. </params>
  136. </database>
  137. </staging>
  138. </configdata>
  139. ]]></programlisting>
  140. </example>
  141. <note>
  142. <title>Chaînes de caractères XML</title>
  143. <para>
  144. <classname>Zend_Config_Xml</classname> est capable de charger une chaîne de caractères
  145. XML directement, par exemple si elle est issue d'une base de données. La chaîne est
  146. fournie en tant que premier paramètre du constructeur et doit commencer par les
  147. caractères <code>'&lt;?xml'</code>&#160;:
  148. </para>
  149. <programlisting language="xml"><![CDATA[
  150. $string = <<<EOT
  151. <?xml version="1.0"?>
  152. <config>
  153. <production>
  154. <db>
  155. <adapter value="pdo_mysql"/>
  156. <params>
  157. <host value="db.example.com"/>
  158. </params>
  159. </db>
  160. </production>
  161. <staging extends="production">
  162. <db>
  163. <params>
  164. <host value="dev.example.com"/>
  165. </params>
  166. </db>
  167. </staging>
  168. </config>
  169. EOT;
  170. $config = new Zend_Config_Xml($string, 'staging');
  171. ]]></programlisting>
  172. </note>
  173. </sect1>