| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?xml version="1.0" encoding="utf-8"?>
- <!-- EN-Revision: 15103 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.config.theory_of_operation">
- <title>Aspect théorique</title>
- <para>
- Les données de configuration sont transmis au constructeur de
- <classname>Zend_Config</classname> sous la forme d'un tableau associatif, qui peut être
- multidimensionnel, afin de supporter une organisation des données du général vers le
- spécifique. Les classes d'adaptateur concrètes permettent de construire le tableau
- associatif pour le constructeur de <classname>Zend_Config</classname> à partir du système
- de stockage des données de configuration. Dans certaines utilisations spécifiques, les
- scripts de l'utilisateur peuvent fournir de tels tableaux (<code>array</code>) directement
- au constructeur de <classname>Zend_Config</classname>, sans employer une classe
- d'adaptateur.
- </para>
- <para>
- Chaque valeur du tableau de données de configuration devient une propriété de l'objet
- <classname>Zend_Config</classname>. La clé est utilisée comme nom de propriété. Si une
- valeur est un tableau, alors la propriété d'objet résultante est créée comme un nouveau
- objet <classname>Zend_Config</classname>, chargé avec les données du tableau. Cela se
- déroule récursivement, tel qu'une hiérarchie de données de configuration peut être créée
- avec n'importe quel nombre de niveaux.
- </para>
- <para>
- <classname>Zend_Config</classname> implémente les interfaces <code>Countable</code> et
- <code>Iterator</code> afin de faciliter l'accès simple aux données de configuration. Ainsi,
- on peut employer la fonction
- <ulink url="http://fr.php.net/count"><code>count()</code></ulink> et des constructions de
- PHP telles que
- <ulink url="http://fr.php.net/foreach"><code>foreach</code></ulink> sur des objets
- <classname>Zend_Config</classname>.
- </para>
- <para>
- Par défaut, les données de configuration fournies par <classname>Zend_Config</classname> ne
- sont pas modifiables (lecture seule), et une affectation (par exemple,
- <code>$config->database->host = 'example.com'</code>) lèvera une exception. Ce
- comportement par défaut peut cependant être surchargé par le constructeur pour permettre la
- modification des valeurs de données. De plus, quand les modifications sont autorisées,
- <classname>Zend_Config</classname> supporte l'effacement de valeurs (c'est-à-dire
- <code>unset($config->database->host);</code>). La méthode <code>readOnly()</code>
- peut être utilisée pour déterminer si les modifications sont autorisés pour un objet
- <classname>Zend_Config</classname> donné et la méthode <code>setReadOnly()</code> peut être
- utilisée pour empêcher toute nouvelle modification d'un objet
- <classname>Zend_Config</classname> qui aurait été créé en autorisant le modifications.
- <note>
- <para>
- Il est important de ne pas confondre des modifications en cours de script avec
- l'enregistrement des données de configuration dans le support de stockage
- spécifique. Les outils pour créer et modifier des données de configuration pour
- différents supports de stockage ne concernent pas
- <classname>Zend_Config</classname>. Des solutions tiers open-source sont facilement
- disponibles afin de créer et/ou de modifier les données de configuration pour
- différents supports de stockage.
- </para>
- </note>
- </para>
- <para>
- Les classes d'adaptateur héritent de la classe de <classname>Zend_Config</classname> ce qui
- permet d'utiliser ses fonctionnalités.
- </para>
- <para>
- La famille des classes <classname>Zend_Config</classname> permet d'organiser les données de
- configuration en sections. Les classes d'adaptateur <classname>Zend_Config</classname>
- peuvent être chargées en spécifiant une section unique, des sections multiples, ou toutes
- les sections (si aucune n'est indiquée).
- </para>
- <para>
- Les classes d'adaptateurs <classname>Zend_Config</classname> supporte un modèle d'héritage
- simple qui permet à des données de configuration d'être héritées d'une section de données
- de configuration dans d'autres. Ceci afin de réduire ou d'éliminer le besoin de reproduire
- des données de configuration pour différents cas. Une section héritante peut également
- surchargée les valeurs dont elle hérite de sa section parente. Comme l'héritage des classes
- PHP, une section peut hériter d'une section parent, qui peut hériter d'une section
- grand-parent, et ainsi de suite, mais l'héritage multiple (c.-à-d., la section C héritant
- directement des sections parents A et B) n'est pas supporté.
- </para>
- <para>
- Si vous avez deux objets <classname>Zend_Config</classname>, vous pouvez les fusionner en
- un objet unique en utilisant la fonction <code>merge()</code>. Par exemple, prenons
- <code>$config</code> et <code>$localConfig</code>, vous pouvez fusionner
- <code>$localConfig</code> dans <code>$config</code> en utilisant
- <code>$config->merge($localConfig);</code>. Les éléments de
- <code>$localConfig</code> surchargeront les éléments nommés de la même manière dans
- <code>$config</code>.
- <note>
- <para>
- L'objet <classname>Zend_Config</classname> qui réalise la fusion doit avoir été
- construit en autorisant les modifications, en fournissant <code>true</code> en tant
- que second paramètre du constructeur. La méthode setReadOnly() peut être utilisée
- pour empêcher toute nouvelle modification après la fin de la fusion.
- </para>
- </note>
- </para>
- </sect1>
|