|
|
@@ -0,0 +1,105 @@
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- EN-Revision: 16674 -->
|
|
|
+<!-- Reviewed: no -->
|
|
|
+<sect1 id="zend.config.theory_of_operation">
|
|
|
+ <title>Teoria de Operação</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Dados de configuração são disponibilizados para o construtor
|
|
|
+ <classname>Zend_Config</classname> através de uma matriz associativa, que pode ser
|
|
|
+ multi-dimensional, a fim organizar os dados do geral ao específico. Classes adaptadoras
|
|
|
+ específicas adaptam os dados de configuração armazenados para produzir uma matriz
|
|
|
+ associativa para o construtor <classname>Zend_Config</classname>. Scripts do usuário
|
|
|
+ poderão fornecer matrizes diretamente para o construtor <classname>Zend_Config</classname>,
|
|
|
+ sem usar uma classe adaptadora, visto que pode ser conveniente em determinadas situações.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Cada dado de configuração de cada valor da matriz torna-se uma propriedade do objeto
|
|
|
+ <classname>Zend_Config</classname>. A chave é usada como o nome da propriedade. Se um valor
|
|
|
+ é também uma matriz, então a propriedade do objeto resultante é criada como um novo objeto
|
|
|
+ <classname>Zend_Config</classname>, carregado com os dados da matriz. Isso ocorre
|
|
|
+ recursivamente, tal como uma hierarquia de dados de configuração podendo ser criados com
|
|
|
+ qualquer número de níveis.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Config</classname> implementa as interfaces <emphasis>Countable</emphasis>
|
|
|
+ e <emphasis>Iterator</emphasis>, a fim de facilitar o acesso simplificado aos dados de
|
|
|
+ configuração. Assim, pode-se usar a função
|
|
|
+ <ulink url="http://php.net/count"><methodname>count()</methodname></ulink>
|
|
|
+ e construtores do <acronym>PHP</acronym> como
|
|
|
+ <ulink url="http://php.net/foreach"><emphasis>foreach</emphasis></ulink>
|
|
|
+ com os objetos <classname>Zend_Config</classname>.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Por padrão, os dados de configuração disponibilizados através de
|
|
|
+ <classname>Zend_Config</classname> são somente leitura, e uma atribuição (por exemplo,
|
|
|
+ <command>$config->database->host = 'example.com';</command>) resulta em uma exceção. Esse
|
|
|
+ comportamento padrão pode ser anulado através do construtor, no entanto, permitindo apenas
|
|
|
+ a modificação dos valores dos dados. Além disso, quando as modificações são permitidas,
|
|
|
+ <classname>Zend_Config</classname> suporta a desativação dos valores (ou seja,
|
|
|
+ <methodname>unset($config->database->host)</methodname>). O método
|
|
|
+ <methodname>readOnly()</methodname> pode ser usado para determinar se as modificações para
|
|
|
+ um determinado objeto <classname>Zend_Config</classname> são permitidas e o método
|
|
|
+ <methodname>setReadOnly()</methodname> pode ser usado para interromper quaisquer alterações
|
|
|
+ posteriores a um objeto <classname>Zend_Config</classname> que foi criado
|
|
|
+ permitindo modificações.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <note>
|
|
|
+ <para>
|
|
|
+ É importante não confundir alterações em memória com dados de configuração salvos em
|
|
|
+ mídia específica de armazenamento. Ferramentas para criar e modificar dados de
|
|
|
+ configuração em diversas mídia de armazenamento estão fora do escopo em relação ao
|
|
|
+ <classname>Zend_Config</classname>. Soluções de código aberto de terceiros estão
|
|
|
+ prontamente disponíveis para esta finalidade.
|
|
|
+ </para>
|
|
|
+ </note>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Classes adaptadoras herdam da classe <classname>Zend_Config</classname> visto que utilizam
|
|
|
+ a sua funcionalidade.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A família de classes <classname>Zend_Config</classname> permite que os dados de
|
|
|
+ configuração sejam organizados em seções. Os objetos adaptadores
|
|
|
+ <classname>Zend_Config</classname> podem ser carregados com uma única seção especificada,
|
|
|
+ várias seções especificadas, ou todas as seções (se nenhum for especificado).
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Classes adaptadoras <classname>Zend_Config</classname> suportam um modelo de herança única
|
|
|
+ que permite que dados de configuração sejam herdados de uma seção de dados de configuração
|
|
|
+ para outra. Isso é oferecido de forma a reduzir ou eliminar a necessidade de duplicação dos
|
|
|
+ dados de configuração para diferentes fins. Uma seção herdada também pode substituir os
|
|
|
+ valores que ela herda através de sua seção pai. Como a herança de classe no
|
|
|
+ <acronym>PHP</acronym>, uma seção pode herdar de uma seção pai, que pode herdar de uma
|
|
|
+ seção avó, e assim por diante, mas a herança múltipla (ou seja, seção C herdando
|
|
|
+ diretamente das seções pais A e B) não é suportada.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Se você tem dois objetos <classname>Zend_Config</classname>, você pode juntá-los em um
|
|
|
+ único objeto usando a função <methodname>merge()</methodname>. Por exemplo, dados
|
|
|
+ <varname>$config</varname> e <varname>$localConfig</varname>, você poderá unificar os
|
|
|
+ dados de <varname>$localConfig</varname> para <varname>$config</varname> usando
|
|
|
+ <command>$config->merge($localConfig);</command>. Os itens em
|
|
|
+ <varname>$localConfig</varname> serão substituídos por quaisquer itens
|
|
|
+ com mesmo nome em <varname>$config</varname>.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <note>
|
|
|
+ <para>
|
|
|
+ O objeto <classname>Zend_Config</classname> que está executando a fusão deve ter sido
|
|
|
+ construído permitindo modificações, passando <constant>TRUE</constant> como o segundo
|
|
|
+ parâmetro do construtor. O método <methodname>setReadOnly()</methodname> pode então ser
|
|
|
+ usado para impedir quaisquer alterações posteriores, após a fusão estiver completa.
|
|
|
+ </para>
|
|
|
+ </note>
|
|
|
+</sect1>
|
|
|
+<!--
|
|
|
+vim:se ts=4 sw=4 et:
|
|
|
+-->
|