Zend_Config_Yaml.xml 10 KB

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