Zend_Config-TheoryOfOperation.xml 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.config.theory_of_operation">
  5. <title>Aspect théorique</title>
  6. <para>
  7. Les données de configuration sont transmis au constructeur de
  8. <classname>Zend_Config</classname> sous la forme d'un tableau associatif, qui peut être
  9. multidimensionnel, afin de supporter une organisation des données du général vers le
  10. spécifique. Les classes d'adaptateur concrètes permettent de construire le tableau
  11. associatif pour le constructeur de <classname>Zend_Config</classname> à partir du système
  12. de stockage des données de configuration. Dans certaines utilisations spécifiques, les
  13. scripts de l'utilisateur peuvent fournir de tels tableaux (<code>array</code>) directement
  14. au constructeur de <classname>Zend_Config</classname>, sans employer une classe
  15. d'adaptateur.
  16. </para>
  17. <para>
  18. Chaque valeur du tableau de données de configuration devient une propriété de l'objet
  19. <classname>Zend_Config</classname>. La clé est utilisée comme nom de propriété. Si une
  20. valeur est un tableau, alors la propriété d'objet résultante est créée comme un nouveau
  21. objet <classname>Zend_Config</classname>, chargé avec les données du tableau. Cela se
  22. déroule récursivement, tel qu'une hiérarchie de données de configuration peut être créée
  23. avec n'importe quel nombre de niveaux.
  24. </para>
  25. <para>
  26. <classname>Zend_Config</classname> implémente les interfaces <code>Countable</code> et
  27. <code>Iterator</code> afin de faciliter l'accès simple aux données de configuration. Ainsi,
  28. on peut employer la fonction
  29. <ulink url="http://fr.php.net/count"><code>count()</code></ulink> et des constructions de
  30. PHP telles que
  31. <ulink url="http://fr.php.net/foreach"><code>foreach</code></ulink> sur des objets
  32. <classname>Zend_Config</classname>.
  33. </para>
  34. <para>
  35. Par défaut, les données de configuration fournies par <classname>Zend_Config</classname> ne
  36. sont pas modifiables (lecture seule), et une affectation (par exemple,
  37. <code>$config-&gt;database-&gt;host = 'example.com'</code>) lèvera une exception. Ce
  38. comportement par défaut peut cependant être surchargé par le constructeur pour permettre la
  39. modification des valeurs de données. De plus, quand les modifications sont autorisées,
  40. <classname>Zend_Config</classname> supporte l'effacement de valeurs (c'est-à-dire
  41. <code>unset($config-&gt;database-&gt;host);</code>). La méthode <code>readOnly()</code>
  42. peut être utilisée pour déterminer si les modifications sont autorisés pour un objet
  43. <classname>Zend_Config</classname> donné et la méthode <code>setReadOnly()</code> peut être
  44. utilisée pour empêcher toute nouvelle modification d'un objet
  45. <classname>Zend_Config</classname> qui aurait été créé en autorisant le modifications.
  46. <note>
  47. <para>
  48. Il est important de ne pas confondre des modifications en cours de script avec
  49. l'enregistrement des données de configuration dans le support de stockage
  50. spécifique. Les outils pour créer et modifier des données de configuration pour
  51. différents supports de stockage ne concernent pas
  52. <classname>Zend_Config</classname>. Des solutions tiers open-source sont facilement
  53. disponibles afin de créer et/ou de modifier les données de configuration pour
  54. différents supports de stockage.
  55. </para>
  56. </note>
  57. </para>
  58. <para>
  59. Les classes d'adaptateur héritent de la classe de <classname>Zend_Config</classname> ce qui
  60. permet d'utiliser ses fonctionnalités.
  61. </para>
  62. <para>
  63. La famille des classes <classname>Zend_Config</classname> permet d'organiser les données de
  64. configuration en sections. Les classes d'adaptateur <classname>Zend_Config</classname>
  65. peuvent être chargées en spécifiant une section unique, des sections multiples, ou toutes
  66. les sections (si aucune n'est indiquée).
  67. </para>
  68. <para>
  69. Les classes d'adaptateurs <classname>Zend_Config</classname> supporte un modèle d'héritage
  70. simple qui permet à des données de configuration d'être héritées d'une section de données
  71. de configuration dans d'autres. Ceci afin de réduire ou d'éliminer le besoin de reproduire
  72. des données de configuration pour différents cas. Une section héritante peut également
  73. surchargée les valeurs dont elle hérite de sa section parente. Comme l'héritage des classes
  74. PHP, une section peut hériter d'une section parent, qui peut hériter d'une section
  75. grand-parent, et ainsi de suite, mais l'héritage multiple (c.-à-d., la section C héritant
  76. directement des sections parents A et B) n'est pas supporté.
  77. </para>
  78. <para>
  79. Si vous avez deux objets <classname>Zend_Config</classname>, vous pouvez les fusionner en
  80. un objet unique en utilisant la fonction <code>merge()</code>. Par exemple, prenons
  81. <code>$config</code> et <code>$localConfig</code>, vous pouvez fusionner
  82. <code>$localConfig</code> dans <code>$config</code> en utilisant
  83. <code>$config-&gt;merge($localConfig);</code>. Les éléments de
  84. <code>$localConfig</code> surchargeront les éléments nommés de la même manière dans
  85. <code>$config</code>.
  86. <note>
  87. <para>
  88. L'objet <classname>Zend_Config</classname> qui réalise la fusion doit avoir été
  89. construit en autorisant les modifications, en fournissant <code>true</code> en tant
  90. que second paramètre du constructeur. La méthode setReadOnly() peut être utilisée
  91. pour empêcher toute nouvelle modification après la fin de la fusion.
  92. </para>
  93. </note>
  94. </para>
  95. </sect1>