Zend_Config_Writer.xml 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 15617 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.config.writer.introduction">
  5. <title>Zend_Config_Writer</title>
  6. <para>
  7. <classname>Zend_Config_Writer</classname> vous donne la possibilité d'écrire des
  8. fichiers de configuration à partir d'objets <classname>Zend_Config</classname>. Il
  9. fonctionne avec des adaptateurs détachés du système et est donc très simple à utiliser. Par
  10. défaut <classname>Zend_Config_Writer</classname> embarque trois adaptateurs, qui
  11. fonctionnent tous de la même façon. Vous instanciez un rédacteur ("writer") avec des
  12. options spécifiques, qui peuvent être <code>filename</code> et <code>config</code>. Ensuite
  13. vous pouvez appeler la méthode <code>write()</code> du rédacteur et le fichier de
  14. configuration est créé. Vous pouvez aussi fournir <code>$filename</code> et
  15. <code>$config</code> directement à la méthode <code>write()</code>. Actuellement les
  16. rédacteurs suivants sont embarqués avec <classname>Zend_Config_Writer</classname>&#160;:
  17. </para>
  18. <itemizedlist>
  19. <listitem>
  20. <para><classname>Zend_Config_Writer_Array</classname></para>
  21. </listitem>
  22. <listitem>
  23. <para><classname>Zend_Config_Writer_Ini</classname></para>
  24. </listitem>
  25. <listitem>
  26. <para><classname>Zend_Config_Writer_Xml</classname></para>
  27. </listitem>
  28. </itemizedlist>
  29. <para>
  30. Une exception subsiste, <classname>Zend_Config_Writer_Ini</classname> qui a un
  31. paramètre optionnel additionnel <code>nestSeparator</code>, définissant le caractère
  32. séparant les profondeurs d'imbrication. Par défaut il s'agit du point ("<code>.</code>"),
  33. comme <classname>Zend_Config_Ini</classname> l'accepte par défaut.
  34. </para>
  35. <para>
  36. Lors de la modification ou la création d'objet <classname>Zend_Config</classname>, il
  37. y a quelques informations à garder en mémoire. Pour créer ou modifier une valeur, vous
  38. appelez simplement le réglage d'un paramètre d'un objet <classname>Zend_Config</classname>
  39. grâce à l'accesseur de paramètre ("<code>-&gt;</code>"). Pour créer une section à la racine
  40. ou pour créer une branche, vous avez juste à créer un nouveau tableau
  41. (<code>$config-&gt;branch = array();</code>). Pour définir quelle section en étend une
  42. autre, vous devez appeler la méthode <code>setExtend()</code> sur l'objet
  43. <classname>Zend_Config</classname> racine.
  44. </para>
  45. <example id="zend.config.writer.example.using">
  46. <title>Utilisation de Zend_Config_Writer</title>
  47. <para>
  48. Cet exemple illustre une utilisation basique
  49. <classname>Zend_Config_Writer_Xml</classname> pour créer un nouveau fichier de
  50. configuration&#160;:
  51. </para>
  52. <programlisting language="php"><![CDATA[
  53. // Créer l'objet de configuration
  54. $config = new Zend_Config(array(), true);
  55. $config->production = array();
  56. $config->staging = array();
  57. $config->setExtend('staging', 'production');
  58. $config->production->db = array();
  59. $config->production->db->hostname = 'localhost';
  60. $config->production->db->username = 'production';
  61. $config->staging->db = array();
  62. $config->staging->db->username = 'staging';
  63. // Ecrire le fichier de l'une des manières suivantes :
  64. // a)
  65. $writer = new Zend_Config_Writer_Xml(array('config' => $config,
  66. 'filename' => 'config.xml'));
  67. $writer->write();
  68. // b)
  69. $writer = new Zend_Config_Writer_Xml();
  70. $writer->setConfig($config)
  71. ->setFilename('config.xml')
  72. ->write();
  73. // c)
  74. $writer = new Zend_Config_Writer_Xml();
  75. $writer->write('config.xml', $config);
  76. ]]></programlisting>
  77. <para>
  78. Ceci créera un fichier de configuration XML avec les sections "production" et
  79. "staging", où "staging" étend "production".
  80. </para>
  81. </example>
  82. <example id="zend.config.writer.modifying">
  83. <title>Modifier une configuration existante</title>
  84. <para>
  85. Cet exemple montre comment modifier un fichier de configuration
  86. existant&#160;:
  87. </para>
  88. <programlisting language="php"><![CDATA[
  89. // Charger toutes les sections d'un fichier de configuration existant,
  90. // tout en évitant les sections étendues.
  91. $config = new Zend_Config_Ini('config.ini',
  92. null,
  93. array('skipExtends' => true,
  94. 'allowModifications' => true));
  95. // Modifier une valeur
  96. $config->production->hostname = 'foobar';
  97. // Ecrire le fichier
  98. $writer = new Zend_Config_Writer_Ini(array('config' => $config,
  99. 'filename' => 'config.ini'));
  100. $writer->write();
  101. ]]></programlisting>
  102. </example>
  103. <note>
  104. <title>Chargement d'un fichier de configuration</title>
  105. <para>
  106. Lors du chargement d'un fichier de configuration existant afin de le modifier, il
  107. est très important de charger toutes les sections et d'éviter les sections étendues,
  108. évitant ainsi toute fusion de valeurs. Ceci est réalisé en fournissant l'option
  109. <code>skipExtends</code> au constructeur.
  110. </para>
  111. </note>
  112. </sect1>