Zend_Config_Ini.xml 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.config.adapters.ini">
  5. <title>Zend_Config_Ini</title>
  6. <para>
  7. <classname>Zend_Config_Ini</classname> permet aux développeurs de stocker des données de
  8. configuration dans le format familier d'un fichier INI et de les lire dans l'application en
  9. employant une syntaxe de propriétés d'objet imbriquées. Le format INI est spécialisé pour
  10. fournir à la fois la capacité d'avoir une hiérarchie des données de configuration et
  11. permettre l'héritage entre les sections de données de configuration. La hiérarchie des
  12. données de configuration est supportée grâce au fractionnement des clés à l'aide de points
  13. (<code>.</code>). Une section peut être étendue ou héritée d'une autre section en suivant
  14. le nom de section avec le caractère de deux points (<code>:</code>) et le nom de la section
  15. de laquelle des données doivent être héritées.
  16. </para>
  17. <note>
  18. <title>Analyse d'un fichier INI</title>
  19. <para>
  20. <classname>Zend_Config_Ini</classname> utilise la fonction
  21. <ulink url="http://fr.php.net/parse_ini_file"><code>parse_ini_file()</code></ulink> de
  22. PHP. Veuillez prendre connaissance de la documentation pour appréhender ses
  23. comportements spécifiques, qui se propagent à <classname>Zend_Config_Ini</classname>,
  24. tel que la façon dont les valeurs spéciales&#160;: <code>true</code>,
  25. <code>false</code>, <code>yes</code>, <code>no</code> et <code>null</code> sont
  26. manipulées.
  27. </para>
  28. </note>
  29. <note>
  30. <title>Séparateur de clé</title>
  31. <para>
  32. Par défaut, le séparateur de clé est le caractère point (.), cependant cela peut
  33. être changé en changeant la clé de <code>$options</code> en construisant l'objet
  34. <classname>Zend_Config_Ini</classname>. Par exemple&#160;:
  35. <programlisting role="php"><![CDATA[
  36. $options['nestSeparator'] = ':';
  37. $options = new Zend_Config_Ini('/chemin/vers/config.ini',
  38. 'test',
  39. $options);
  40. ]]></programlisting>
  41. </para>
  42. </note>
  43. <example id="zend.config.adapters.ini.example.using">
  44. <title>Utiliser Zend_Config_Ini</title>
  45. <para>
  46. Cet exemple illustre une utilisation de base de <classname>Zend_Config_Ini</classname>
  47. pour le chargement des données de configuration à partir d'un fichier INI. Dans cet
  48. exemple il y a des données de configuration pour un environnement de production et pour
  49. un environnement de test. Puisque les données de configuration de l'environnement de
  50. test sont très semblables à celles de la production, la section de test hérite de la
  51. section de production. Dans ce cas, la décision est arbitraire et pourrait avoir été
  52. écrite réciproquement, avec la section de production héritant de la section de test,
  53. bien que ceci ne doit pas être le cas pour des situations plus complexes. Supposons,
  54. que les données suivantes de configuration sont contenues dans
  55. <filename>/chemin/vers/config.ini</filename>&#160;:
  56. </para>
  57. <programlisting role="ini"><![CDATA[
  58. ; Données de configuration du site de production
  59. [production]
  60. webhost = www.example.com
  61. database.adapter = pdo_mysql
  62. database.params.host = db.example.com
  63. database.params.username = dbuser
  64. database.params.password = secret
  65. database.params.dbname = dbname
  66. ; Données de configuration du site de test héritant du site
  67. ; de production et surchargeant les clés nécessaires
  68. [test : production]
  69. database.params.host = dev.example.com
  70. database.params.username = devuser
  71. database.params.password = devsecret
  72. ]]></programlisting>
  73. <para>
  74. Ensuite, supposons que le développeur ait besoin des données de configuration de
  75. test issues du fichier INI. Il est facile de charger ces données en indiquant le
  76. fichier INI et la section de test&#160;:
  77. </para>
  78. <programlisting role="php"><![CDATA[
  79. $config = new Zend_Config_Ini('/chemin/vers/config.ini', 'test');
  80. echo $config->database->params->host; // affiche "dev.example.com"
  81. echo $config->database->params->dbname; // affiche "dbname"
  82. ]]></programlisting>
  83. </example>
  84. <note>
  85. <table id="zend.config.adapters.ini.table">
  86. <title>Paramètres du constructeur de Zend_Config_Ini</title>
  87. <tgroup cols="2">
  88. <thead>
  89. <row>
  90. <entry>Paramètres</entry>
  91. <entry>Notes</entry>
  92. </row>
  93. </thead>
  94. <tbody>
  95. <row>
  96. <entry><code>$filename</code></entry>
  97. <entry>Le fichier INI à charger.</entry>
  98. </row>
  99. <row>
  100. <entry><code>$section</code></entry>
  101. <entry>
  102. La [section] dans le fichier ini qui doit être chargé.
  103. L'affectation de <code>null</code> à ce paramètre chargera toutes les
  104. sections. Alternativement, un tableau de noms de section peut être
  105. fourni pour charger des sections multiples.
  106. </entry>
  107. </row>
  108. <row>
  109. <entry><code>$options = false</code></entry>
  110. <entry>
  111. Tableau d'options. Les clés suivantes sont supportées&#160;:
  112. <itemizedlist>
  113. <listitem>
  114. <para><emphasis>allowModifications</emphasis> : Mettre à
  115. <code>true</code> pour permettre la modification du fichier
  116. chargé. Par défaut à <code>false</code>.
  117. </para>
  118. </listitem>
  119. <listitem>
  120. <para>
  121. <emphasis>nestSeparator</emphasis> : Caractère à utiliser
  122. en tant que séparateur d'imbrication. Par défaut ".".
  123. </para>
  124. </listitem>
  125. </itemizedlist></entry>
  126. </row>
  127. </tbody>
  128. </tgroup>
  129. </table>
  130. </note>
  131. </sect1>