Zend_Config_Yaml.xml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24604 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.config.adapters.yaml">
  5. <title>Zend_Config_Yaml</title>
  6. <sect2 id="zend.config.adapters.yaml.intro">
  7. <title>Aperçu</title>
  8. <para>
  9. <ulink url="http://www.yaml.org/">YAML</ulink> est un acronyme récursif signifiant "YAML
  10. Ain't Markup Language", et peuyt se résumer en "standard de sérialization de données
  11. human friendly pour tous les langages de programmation." Il est souvent utilisé pour
  12. la configuration d'applications.
  13. </para>
  14. <para>
  15. <classname>Zend_Config_Yaml</classname> est une petite extensions de
  16. <classname>Zend_Config</classname>. Il inclut un analyseur capable de reconnaître la syntaxe
  17. YAML utilisées pour des besoins de configuration et permet de préciser d'autres analyseurs
  18. à utiliser pour le support de syntaxes complexes (e.g., ext/syck, spyc, sfYaml, etc.).
  19. </para>
  20. </sect2>
  21. <sect2 id="zend.config.adapters.yaml.quick-start">
  22. <title>Démarrage rapide</title>
  23. <para>
  24. Voici une version YAML de la configuration d'une application standard.
  25. </para>
  26. <programlisting language="yaml"><![CDATA[
  27. production:
  28. phpSettings:
  29. display_startup_errors: false
  30. display_errors: false
  31. includePaths:
  32. library: APPLICATION_PATH/../library
  33. bootstrap:
  34. path: APPLICATION_PATH/Bootstrap.php
  35. class: "Bootstrap"
  36. appnamespace: "Application"
  37. resources:
  38. frontController:
  39. controllerDirectory: APPLICATION_PATH/controllers
  40. moduleDirectory: APPLICATION_PATH/modules
  41. params:
  42. displayExceptions: false
  43. modules:
  44. db:
  45. adapter: "pdo_sqlite"
  46. params:
  47. dbname: APPLICATION_PATH/../data/db/application.db
  48. layout:
  49. layoutPath: APPLICATION_PATH/layouts/scripts/
  50. staging:
  51. _extends: production
  52. testing:
  53. _extends: production
  54. phpSettings:
  55. display_startup_errors: true
  56. display_errors: true
  57. development:
  58. _extends: production
  59. phpSettings:
  60. display_startup_errors: true
  61. display_errors: true
  62. resources:
  63. frontController:
  64. params:
  65. displayExceptions: true
  66. ]]></programlisting>
  67. <para>
  68. Pour l'utiliser, instanciez simplement <classname>Zend_Config_Yaml</classname> en lui
  69. indiquant le chemin vers ce fichier ainsi que la section à charger. Par défaut,
  70. les constantes trouvées dans les valeurs seront substituées par leurs valeurs.
  71. </para>
  72. <programlisting language="php"><![CDATA[
  73. $config = new Zend_Config_Yaml(
  74. APPLICATION_PATH . '/configs/application.yaml',
  75. APPLICATION_ENV
  76. );
  77. ]]></programlisting>
  78. <para>
  79. Une fois instancié, l'utilisation est classique, comme un objet de configuration.
  80. </para>
  81. <programlisting language="php"><![CDATA[
  82. $db = Zend_Db::factory($config->resources->db);
  83. ]]></programlisting>
  84. </sect2>
  85. <sect2 id="zend.config.adapters.yaml.options">
  86. <title>Options de configuration</title>
  87. <para>
  88. Les options suivantes peuvent être passées comme clés au troisième paramètre
  89. <varname>$options</varname> du constructeur.
  90. </para>
  91. <variablelist>
  92. <title>Zend_Config_Yaml Options</title>
  93. <varlistentry>
  94. <term>allow_modifications</term>
  95. <listitem>
  96. <para>
  97. Par défaut, <classname>Zend_Config</classname> est en lecture seule.
  98. Passer cette option à <constant>true</constant> autorisera la modification
  99. de l'objet.
  100. </para>
  101. </listitem>
  102. </varlistentry>
  103. <varlistentry>
  104. <term>skip_extends</term>
  105. <listitem>
  106. <para>
  107. Par défaut, à chaque fois qu'une section étend une autre,
  108. <classname>Zend_Config</classname> regroupera cette section avec son parent.
  109. Utiliser le booléen <constant>true</constant> pour cette option désactivera ce
  110. comportement, la configuration de la section sera telle-quelle.
  111. </para>
  112. </listitem>
  113. </varlistentry>
  114. <varlistentry>
  115. <term>ignore_constants</term>
  116. <listitem>
  117. <para>
  118. Par défaut, <classname>Zend_Config_Yaml</classname> remplacera toutes les
  119. constantes trouvées dans le fichier par leurs valeurs respectives. Passez
  120. le booléen <constant>true</constant> à cette option pour désactiver cette
  121. fonctionnalité.
  122. </para>
  123. </listitem>
  124. </varlistentry>
  125. <varlistentry>
  126. <term>yaml_decoder</term>
  127. <listitem>
  128. <para>
  129. Par défaut, <classname>Zend_Config_Yaml</classname> utilise une analyseur interne,
  130. <methodname>Zend_Config_Yaml::decode()</methodname>, pour analyser et traiter les
  131. fichiers YAML. Vous pouvez préciser une fonction de callback à utiliser comme
  132. analyseur externe via cette option.
  133. </para>
  134. </listitem>
  135. </varlistentry>
  136. </variablelist>
  137. </sect2>
  138. <sect2 id="zend.config.adapters.yaml.methods">
  139. <title>Méthodes disponibles</title>
  140. <variablelist>
  141. <varlistentry id="zend.config.adapters.yaml.methods.constructor">
  142. <term>
  143. <methodsynopsis>
  144. <methodname>__construct</methodname>
  145. <methodparam>
  146. <funcparams>$yaml, $section = null, $options = false</funcparams>
  147. </methodparam>
  148. </methodsynopsis>
  149. </term>
  150. <listitem>
  151. <para>
  152. Constructeur. <varname>$yaml</varname> doit pointer vers un fichier YAML valide.
  153. Si <varname>$section</varname> est précisé, seule la section indiquée sera analysée.
  154. <varname>$options</varname> est documenté dans <link
  155. linkend="zend.config.adapters.yaml.options">la section options</link>.
  156. </para>
  157. </listitem>
  158. </varlistentry>
  159. <varlistentry id="zend.config.adapters.yaml.methods.decode">
  160. <term>
  161. <methodsynopsis>
  162. <methodname>decode</methodname>
  163. <methodparam>
  164. <funcparams>$yaml</funcparams>
  165. </methodparam>
  166. </methodsynopsis>
  167. </term>
  168. <listitem>
  169. <para>
  170. Analyse et transforme une chaîne YAML en un tableau PHP.
  171. </para>
  172. </listitem>
  173. </varlistentry>
  174. <varlistentry id="zend.config.adapters.yaml.methods.set-ignore-constants">
  175. <term>
  176. <methodsynopsis>
  177. <methodname>setIgnoreConstants</methodname>
  178. <methodparam>
  179. <funcparams>$flag</funcparams>
  180. </methodparam>
  181. </methodsynopsis>
  182. </term>
  183. <listitem>
  184. <para>
  185. Cette méthode <emphasis>statique</emphasis> est utilisée pour changer le
  186. comportement global de l'analyse des constantes trouvées dans les fichiers
  187. YAML. Par défaut, les constantes sont remplacées par leurs valeurs. Passer
  188. le booléen <constant>true</constant> à cette méthode surchargera ce
  189. comportement. (Vous pouvez changer le comportement par instance en utilisant
  190. l'option <varname>ignore_constants</varname>.)
  191. </para>
  192. </listitem>
  193. </varlistentry>
  194. <varlistentry id="zend.config.adapters.yaml.methods.ignore-constants">
  195. <term>
  196. <methodsynopsis>
  197. <methodname>ignoreConstants</methodname>
  198. <methodparam>
  199. <funcparams></funcparams>
  200. </methodparam>
  201. </methodsynopsis>
  202. </term>
  203. <listitem>
  204. <para>
  205. Cette méthode <emphasis>statique</emphasis> retourne la valeur actuelle
  206. de <varname>ignore_constants</varname>.
  207. </para>
  208. </listitem>
  209. </varlistentry>
  210. </variablelist>
  211. </sect2>
  212. <sect2 id="zend.config.adapters.yaml.examples">
  213. <title>Exemples</title>
  214. <example id="zend.config.adapters.yaml.examples.sf-yaml">
  215. <title>Utiliser Zend_Config_Yaml avec sfYaml</title>
  216. <para>
  217. Comme précisé dans la <link linkend="zend.config.adapters.yaml.options">section des options
  218. </link>, <classname>Zend_Config_Yaml</classname> vous permet de spécifier votre propre
  219. analyseur YAML.
  220. </para>
  221. <para>
  222. <ulink url="http://components.symfony-project.org/yaml/">sfYaml</ulink> est un <ulink
  223. url="http://components.symfony-project.org/">Symfony component</ulink> qui implémente
  224. un analyseur YAML complet pour PHP, et inclus des fonctionnalités additionnelles comme l'analyse
  225. d'expressions PHP incluses dans du YAML. Dans cet exemple, nous utilisons
  226. <methodname>sfYaml::load()</methodname> comme méthode callback pour le décodage du YAML.
  227. <emphasis>(Note: ceci suppose que la classe <classname>sfYaml</classname> est déja chargée
  228. ou disponible pour auto-chargement.)</emphasis>
  229. </para>
  230. <programlisting language="php"><![CDATA[
  231. $config = new Zend_Config_Yaml(
  232. APPLICATION_PATH . '/configs/application.yaml',
  233. APPLICATION_ENV,
  234. array('yaml_decoder' => array('sfYaml', 'load'))
  235. );
  236. ]]></programlisting>
  237. </example>
  238. </sect2>
  239. </sect1>