| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- 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:
- -->
|