| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15103 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.config.adapters.xml">
- <title>Zend_Config_Xml</title>
- <para>
- <classname>Zend_Config_Xml</classname> permite a los desarrolladores almacenar
- datos de configuración en un formato sencillo XML y leerlos a través de
- una sintáxis de propiedades de objetos anidados. El elemento raíz del
- archivo XML es irrelevante y puede ser nombrado arbitrariamente.
- El primer nivel de elementos XML corresponde con las secciones de datos
- de configuración. El formato XML admite organización jerárquica a
- través del anidamiento de elementos XML bajo los elementos a nivel de
- sección. El contenido de un elemento XML a nivel de hoja corresponde al
- valor de un dato de configuración. La herencia de sección está permitida
- por un atributo XML especial llamado <methodname>extends</methodname>, y el valor de
- este atributo se corresponde con la sección de la cual los datos son
- heredados por la sección extendida..
- </para>
- <note>
- <title>Tipo devuelto</title>
- <para>
- Los datos de configuración que se leen en <classname>Zend_Config_Xml</classname>
- son siempre devueltos como strings.
- La conversión de datos de string a otros tipos se deja en manos de los
- desarrolladores para que se ajuste a sus necesidades particulares.
- </para>
- </note>
- <example id="zend.config.adapters.xml.example.using">
- <title>Usando Zend_Config_Xml</title>
- <para>
- Este ejemplo ilustra un uso básico de <classname>Zend_Config_Xml</classname>
- para cargar datos de configuración de un archivo XML. En este ejemplo
- hay datos de configuración tanto para un sistema de producción como
- para un sistema de pruebas. Debido a que los datos de configuración del
- sistema de pruebas son muy similares a los de producción, la sección de
- pruebas hereda de la sección de producción. En este caso, la decisión
- es arbitraria y podría haberse escrito a la inversa, con la sección de
- producción heredando de la sección de pruebas, a pesar de que éste no
- sería el caso para situaciones más complejas. Suponga, pues, que los
- datos de configuración siguientes están contenidos
- en <methodname>/ruta/de/config.xml</methodname>:
- </para>
- <programlisting language="xml"><![CDATA[
- <?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>
- <staging extends="production">
- <database>
- <params>
- <host>dev.example.com</host>
- <username>devuser</username>
- <password>devsecret</password>
- </params>
- </database>
- </staging>
- </configdata>
- ]]></programlisting>
- <para>
- Ahora, asuma que el desarrollador de aplicaciones necesita los datos
- de configuración de la fase de pruebas del archivo XML. Es una tarea
- sencilla cargar estos datos, especificando el archivo XML y la
- sección de pruebas:
- </para>
- <programlisting language="php"><![CDATA[
- $config = new Zend_Config_Xml('/ruta/de/config.xml', 'pruebas');
- echo $config->database->params->host; // muestra "dev.example.com"
- echo $config->database->params->dbname; // muestra "dbname"
- ]]></programlisting>
- </example>
- <example id="zend.config.adapters.xml.example.attributes">
- <title>Usando atributos de etiqueta en Zend_Config_Xml</title>
- <para>
- Zend_Config_Xml también soporta dos formas adicionales de definir
- nodos en la configuración. Ambas hacen uso de atributos. Dado que
- los atributos <methodname>extends</methodname> y <methodname>value</methodname> son palabras
- reservadas (la última por la segunda manera de usar atributos),
- pueden no ser utilizadas.
- La primera manera de utilizar atributos es añadir atributos en un
- nodo padre, el cual será interpretado como hijo de ese nodo:
- </para>
- <programlisting language="xml"><![CDATA[
- <?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>
- ]]></programlisting>
- <para>
- La otra forma no reduce la configuración, sino que permite mantenerla de
- forma más fácil dado que no es necesario escribir el nombre de la
- etiqueta dos veces. Simplemente, cree una etiqueta vacía con el valor en
- el atributo <methodname>value</methodname>:
- </para>
- <programlisting language="xml"><![CDATA[
- <?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>
- ]]></programlisting>
- </example>
- <note>
- <title>XML strings</title>
- <para>
- <classname>Zend_Config_Xml</classname> is able to load an XML string directly,
- such as that retrieved from a database. The string is passed
- as the first parameter to the constructor and must start with the
- characters <methodname>'<?xml'</methodname>:
- </para>
- <programlisting language="xml"><![CDATA[
- $string = <<<EOT
- <?xml version="1.0"?>
- <config>
- <production>
- <db>
- <adapter value="pdo_mysql"/>
- <params>
- <host value="db.example.com"/>
- </params>
- </db>
- </production>
- <staging extends="production">
- <db>
- <params>
- <host value="dev.example.com"/>
- </params>
- </db>
- </staging>
- </config>
- EOT;
- $config = new Zend_Config_Xml($string, 'staging');
- ]]></programlisting>
- </note>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|