| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.config.theory_of_operation">
- <title>Aspectos Teóricos</title>
- <para> Los datos de configuración se hacen accesibles al constructor
- <classname>Zend_Config</classname> a través de un array asociativo,
- que puede ser multidimensional, para permitir organizar los datos desde
- lo general a lo específico. Las clases de adaptador concretas permiten
- construir una tabla asociativa para el constructor de
- <classname>Zend_Config</classname> a partir de un sistema de
- almacenamiento de datos de configuración. Algunos scripts de usuario
- pueden proveer esos arrays directamente al constructor Zend_Config, sin
- usar una clase adaptador, lo cual puede ser apropiado en ciertas
- ocasiones. </para>
- <para> Cada valor del array de datos de configuración se convierte en una
- propiedad del objeto <classname>Zend_Config</classname> . La clave es
- usada como el nombre de la propiedad. Si un valor es un array por sí
- solo, entonces la propiedad de objeto resultante es creada como un nuevo
- objeto <classname>Zend_Config</classname> , cargado con los datos del
- array. Esto ocurre recursivamente, de forma que una jerarquía de datos
- de configuración puede ser creada con cualquier número de niveles. </para>
- <para>
- <classname>Zend_Config</classname> implementa las interfaces
- <emphasis>Countable</emphasis> e <emphasis>Iterator</emphasis> para
- facilitar el aceso sencillo a los datos de configuración. Así, uno puede
- usar la función <ulink url="http://php.net/count">
- <methodname>count()</methodname>
- </ulink> y constructores <acronym>PHP</acronym> como <ulink
- url="http://php.net/foreach">
- <emphasis>foreach</emphasis>
- </ulink> sobre objetos <classname>Zend_Config</classname> . </para>
- <para> Por defecto, los datos de configuración permitidos a través de
- <classname>Zend_Config</classname> son de sólo lectura, y una
- asignación (e.g., <methodname>$config->database->host =
- 'example.com'</methodname> ) provoca que se lance una excepción.
- Este comportamiento por defecto puede ser sobrescrito a través del
- constructor, sin embargo, para permitir la modificación de valores de
- datos. Además, cuando las modificaciones están permitidas,
- <classname>Zend_Config</classname> soporta el borrado de elementos
- (unset) (i.e.
- <methodname>unset($config->database->host);</methodname>
- ). El método <methodname>readOnly()</methodname> puede ser usado para
- determinar si las modificaciones a un objeto
- <classname>Zend_Config</classname> están permitidas y el método
- <methodname>setReadOnly()</methodname> puede ser usado para evitar
- cualquier modificación posterior a un objeto
- <classname>Zend_Config</classname> que fue creado con permiso de
- modificaciones.
- </para>
- <note>
- <para> Es importante no confundir tales modificaciones en memoria
- con guardar los datos de configuración a un medio de
- almacenamiento específico. Las herramientas para crear y
- modificar datos de configuración para distintos medios de
- almacenamiento están fuera del alcance de
- <classname>Zend_Config</classname> . Existen soluciones
- third-party de código abierto con el propósito de crear y
- modificar datos de configuración de distintos medios de
- almacenamiento. </para>
- </note>
- <para> Las clases del adaptador heredan de la clase
- <classname>Zend_Config</classname> debido a que utilizan su
- funcionalidad. </para>
- <para> La familia de clases <classname>Zend_Config</classname> permite
- organizar en secciones los datos de configuración. Los objetos de
- adaptador <classname>Zend_Config</classname> pueden ser cargados con una
- sola sección especificada, múltiples secciones especificadas, o todas
- las secciones (si no se especifica ninguna). </para>
- <para> Las clases del adaptador <classname>Zend_Config</classname> soportan
- un modelo de herencia única que permite que los datos de configuración
- hereden de una sección de datos de configuración a otra. Esto es
- provisto con el fin de reducir o eliminar la necesidad de duplicar datos
- de configuración por distintos motivos. Una sección heredada puede
- también sobrescribir los valores que hereda de su sección padre. Al
- igual que la herencia de clases <acronym>PHP</acronym> , una sección
- puede heredar de una sección padre, la cual puede heredar de una sección
- abuela, etc..., pero la herencia múltiple (i.e., la sección C heredando
- directamente de las secciones padre A y B) no está permitida. </para>
- <para> Si tiene dos objetos <classname>Zend_Config</classname> , puede
- combinarlos en un único objeto usando la función
- <methodname>merge()</methodname> . Por ejemplo, dados
- <varname>$config</varname> y <varname>$localConfig</varname> , puede
- fusionar datos de <varname>$localConfig</varname> a
- <varname>$config</varname> usando
- <methodname>$config->merge($localConfig);</methodname> . Los
- ítemes en <varname>$localConfig</varname> sobrescribirán cualquier item
- con el mismo nombre en <varname>$config</varname> .
- </para>
- <note>
- <para> El objeto <classname>Zend_Config</classname> que está
- ejecutando el merge debe haber sido construido para permitir
- modificaciones, pasando <constant>TRUE</constant> como el
- segundo parámetro del constructor. El método
- <methodname>setReadOnly()</methodname> puede entonces ser
- usado para evitar cualquier modificación posterior después de
- que el merge se haya completado. </para>
- </note>
- </sect1>
|