Zend_Config_Xml.xml 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.config.adapters.xml">
  5. <title>Zend_Config_Xml</title>
  6. <para>
  7. <classname>Zend_Config_Xml</classname> permite a los desarrolladores almacenar
  8. datos de configuración en un formato sencillo XML y leerlos a través de
  9. una sintáxis de propiedades de objetos anidados. El elemento raíz del
  10. archivo XML es irrelevante y puede ser nombrado arbitrariamente.
  11. El primer nivel de elementos XML corresponde con las secciones de datos
  12. de configuración. El formato XML admite organización jerárquica a
  13. través del anidamiento de elementos XML bajo los elementos a nivel de
  14. sección. El contenido de un elemento XML a nivel de hoja corresponde al
  15. valor de un dato de configuración. La herencia de sección está permitida
  16. por un atributo XML especial llamado <methodname>extends</methodname>, y el valor de
  17. este atributo se corresponde con la sección de la cual los datos son
  18. heredados por la sección extendida..
  19. </para>
  20. <note>
  21. <title>Tipo devuelto</title>
  22. <para>
  23. Los datos de configuración que se leen en <classname>Zend_Config_Xml</classname>
  24. son siempre devueltos como strings.
  25. La conversión de datos de string a otros tipos se deja en manos de los
  26. desarrolladores para que se ajuste a sus necesidades particulares.
  27. </para>
  28. </note>
  29. <example id="zend.config.adapters.xml.example.using">
  30. <title>Usando Zend_Config_Xml</title>
  31. <para>
  32. Este ejemplo ilustra un uso básico de <classname>Zend_Config_Xml</classname>
  33. para cargar datos de configuración de un archivo XML. En este ejemplo
  34. hay datos de configuración tanto para un sistema de producción como
  35. para un sistema de pruebas. Debido a que los datos de configuración del
  36. sistema de pruebas son muy similares a los de producción, la sección de
  37. pruebas hereda de la sección de producción. En este caso, la decisión
  38. es arbitraria y podría haberse escrito a la inversa, con la sección de
  39. producción heredando de la sección de pruebas, a pesar de que éste no
  40. sería el caso para situaciones más complejas. Suponga, pues, que los
  41. datos de configuración siguientes están contenidos
  42. en <methodname>/ruta/de/config.xml</methodname>:
  43. </para>
  44. <programlisting language="xml"><![CDATA[
  45. <?xml version="1.0"?>
  46. <configdata>
  47. <production>
  48. <webhost>www.example.com</webhost>
  49. <database>
  50. <adapter>pdo_mysql</adapter>
  51. <params>
  52. <host>db.example.com</host>
  53. <username>dbuser</username>
  54. <password>secret</password>
  55. <dbname>dbname</dbname>
  56. </params>
  57. </database>
  58. </production>
  59. <staging extends="production">
  60. <database>
  61. <params>
  62. <host>dev.example.com</host>
  63. <username>devuser</username>
  64. <password>devsecret</password>
  65. </params>
  66. </database>
  67. </staging>
  68. </configdata>
  69. ]]></programlisting>
  70. <para>
  71. Ahora, asuma que el desarrollador de aplicaciones necesita los datos
  72. de configuración de la fase de pruebas del archivo XML. Es una tarea
  73. sencilla cargar estos datos, especificando el archivo XML y la
  74. sección de pruebas:
  75. </para>
  76. <programlisting language="php"><![CDATA[
  77. $config = new Zend_Config_Xml('/ruta/de/config.xml', 'pruebas');
  78. echo $config->database->params->host; // muestra "dev.example.com"
  79. echo $config->database->params->dbname; // muestra "dbname"
  80. ]]></programlisting>
  81. </example>
  82. <example id="zend.config.adapters.xml.example.attributes">
  83. <title>Usando atributos de etiqueta en Zend_Config_Xml</title>
  84. <para>
  85. Zend_Config_Xml también soporta dos formas adicionales de definir
  86. nodos en la configuración. Ambas hacen uso de atributos. Dado que
  87. los atributos <methodname>extends</methodname> y <methodname>value</methodname> son palabras
  88. reservadas (la última por la segunda manera de usar atributos),
  89. pueden no ser utilizadas.
  90. La primera manera de utilizar atributos es añadir atributos en un
  91. nodo padre, el cual será interpretado como hijo de ese nodo:
  92. </para>
  93. <programlisting language="xml"><![CDATA[
  94. <?xml version="1.0"?>
  95. <configdata>
  96. <production webhost="www.example.com">
  97. <database adapter="pdo_mysql">
  98. <params host="db.example.com" username="dbuser" password="secret" dbname="dbname"/>
  99. </database>
  100. </production>
  101. <staging extends="production">
  102. <database>
  103. <params host="dev.example.com" username="devuser" password="devsecret"/>
  104. </database>
  105. </staging>
  106. </configdata>
  107. ]]></programlisting>
  108. <para>
  109. La otra forma no reduce la configuración, sino que permite mantenerla de
  110. forma más fácil dado que no es necesario escribir el nombre de la
  111. etiqueta dos veces. Simplemente, cree una etiqueta vacía con el valor en
  112. el atributo <methodname>value</methodname>:
  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>XML strings</title>
  143. <para>
  144. <classname>Zend_Config_Xml</classname> is able to load an XML string directly,
  145. such as that retrieved from a database. The string is passed
  146. as the first parameter to the constructor and must start with the
  147. characters <methodname>'&lt;?xml'</methodname>:
  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>
  174. <!--
  175. vim:se ts=4 sw=4 et:
  176. -->