Zend_Config_Xml.xml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <sect1 id="zend.config.adapters.xml">
  2. <title>Zend_Config_Xml</title>
  3. <para>
  4. <code>Zend_Config_Xml</code> permite a los desarrolladores almacenar
  5. datos de configuración en un formato sencillo XML y leerlos a través de
  6. una sintáxis de propiedades de objetos anidados. El elemento raíz del
  7. archivo XML es irrelevante y puede ser nombrado arbitrariamente.
  8. El primer nivel de elementos XML corresponde con las secciones de datos
  9. de configuración. El formato XML admite organización jerárquica a
  10. través del anidamiento de elementos XML bajo los elementos a nivel de
  11. sección. El contenido de un elemento XML a nivel de hoja corresponde al
  12. valor de un dato de configuración. La herencia de sección está permitida
  13. por un atributo XML especial llamado <code>extends</code>, y el valor de
  14. este atributo se corresponde con la sección de la cual los datos son
  15. heredados por la sección extendida..
  16. </para>
  17. <note>
  18. <title>Tipo devuelto</title>
  19. <para>
  20. Los datos de configuración que se leen en <code>Zend_Config_Xml</code>
  21. son siempre devueltos como strings.
  22. La conversión de datos de string a otros tipos se deja en manos de los
  23. desarrolladores para que se ajuste a sus necesidades particulares.
  24. </para>
  25. </note>
  26. <example id="zend.config.adapters.xml.example.using">
  27. <title>Usando Zend_Config_Xml</title>
  28. <para>
  29. Este ejemplo ilustra un uso básico de <code>Zend_Config_Xml</code>
  30. para cargar datos de configuración de un archivo XML. En este ejemplo
  31. hay datos de configuración tanto para un sistema de producción como
  32. para un sistema de pruebas. Debido a que los datos de configuración del
  33. sistema de pruebas son muy similares a los de producción, la sección de
  34. pruebas hereda de la sección de producción. En este caso, la decisión
  35. es arbitraria y podría haberse escrito a la inversa, con la sección de
  36. producción heredando de la sección de pruebas, a pesar de que éste no
  37. sería el caso para situaciones más complejas. Suponga, pues, que los
  38. datos de configuración siguientes están contenidos
  39. en <code>/ruta/de/config.xml</code>:
  40. </para>
  41. <programlisting role="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. <staging 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. </staging>
  65. </configdata>
  66. ]]>
  67. </programlisting>
  68. <para>
  69. Ahora, asuma que el desarrollador de aplicaciones necesita los datos
  70. de configuración de la fase de pruebas del archivo XML. Es una tarea
  71. sencilla cargar estos datos, especificando el archivo XML y la
  72. sección de pruebas:
  73. </para>
  74. <programlisting role="php"><![CDATA[
  75. $config = new Zend_Config_Xml('/ruta/de/config.xml', 'pruebas');
  76. echo $config->database->params->host; // muestra "dev.example.com"
  77. echo $config->database->params->dbname; // muestra "dbname"
  78. ]]>
  79. </programlisting>
  80. </example>
  81. <example id="zend.config.adapters.xml.example.attributes">
  82. <title>Usando atributos de etiqueta en Zend_Config_Xml</title>
  83. <para>
  84. Zend_Config_Xml también soporta dos formas adicionales de definir
  85. nodos en la configuración. Ambas hacen uso de atributos. Dado que
  86. los atributos <code>extends</code> y <code>value</code> son palabras
  87. reservadas (la última por la segunda manera de usar atributos),
  88. pueden no ser utilizadas.
  89. La primera manera de utilizar atributos es añadir atributos en un
  90. nodo padre, el cual será interpretado como hijo de ese nodo:
  91. </para>
  92. <programlisting role="xml"><![CDATA[
  93. <?xml version="1.0"?>
  94. <configdata>
  95. <production webhost="www.example.com">
  96. <database adapter="pdo_mysql">
  97. <params host="db.example.com" username="dbuser" password="secret" dbname="dbname"/>
  98. </database>
  99. </production>
  100. <staging extends="production">
  101. <database>
  102. <params host="dev.example.com" username="devuser" password="devsecret"/>
  103. </database>
  104. </staging>
  105. </configdata>
  106. ]]>
  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 <code>value</code>:
  113. </para>
  114. <programlisting role="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. ]]>
  140. </programlisting>
  141. </example>
  142. </sect1>
  143. <!--
  144. vim:se ts=4 sw=4 et:
  145. -->