| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <?xml version="1.0" encoding="utf-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- 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 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 <emphasis>Countable</emphasis>
- et <emphasis>Iterator</emphasis> 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"><methodname>count()</methodname></ulink>
- et des constructions de <acronym>PHP</acronym> telles que
- <ulink url="http://fr.php.net/foreach"><emphasis>foreach</emphasis></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,
- <command>$config->database->host = 'example.com';</command>) 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
- <methodname>unset($config->database->host)</methodname>). La méthode
- <methodname>readOnly()</methodname> 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
- <methodname>setReadOnly()</methodname> 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.
- </para>
- <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>
- 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 qui hérite peut également
- surchargée les valeurs dont elle hérite de sa section parente. Comme l'héritage des classes
- <acronym>PHP</acronym>, 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 <methodname>merge()</methodname>. Par exemple,
- prenons <varname>$config</varname> et <varname>$localConfig</varname>, vous pouvez fusionner
- <varname>$localConfig</varname> dans <varname>$config</varname> en utilisant
- <command>$config->merge($localConfig);</command>. Les éléments de
- <varname>$localConfig</varname> surchargeront les éléments nommés de la même manière dans
- <varname>$config</varname>.
- </para>
- <note>
- <para>
- L'objet <classname>Zend_Config</classname> qui réalise la fusion doit avoir été
- construit en autorisant les modifications, en fournissant <constant>TRUE</constant>
- en tant que second paramètre du constructeur. La méthode
- <methodname>setReadOnly()</methodname> peut être utilisée pour empêcher toute nouvelle
- modification après la fin de la fusion.
- </para>
- </note>
- </sect1>
|