Zend_Config_Writer.xml 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15719 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.config.writer.introduction">
  5. <title>Zend_Config_Writer</title>
  6. <para>
  7. <classname>Zend_Config_Writer</classname> gibt einem die Möglichkeit Configdateien aus
  8. <classname>Zend_Config</classname> Objekten heraus zu schreiben. Es arbeitet mit einem
  9. Adapter-artigen System und ist deswegen sehr einfach zu verwenden. Standardmäßig wird
  10. <classname>Zend_Config_Writer</classname> mit drei Adaptern ausgeliefert, die alle gleich
  11. funktionieren. Der Writer wird mit speziellen Optionen instanziert, welche
  12. <code>filename</code> und <code>config</code> sein können. Dann wird die
  13. <code>write()</code> Methode des Writers aufgerufen und die Configdatei wird erstellt. Man
  14. kann <varname>$filename</varname> und <varname>$config</varname> auch direkt an die
  15. <code>write()</code> Methode übergeben. Aktuell werden die folgenden Writer mit
  16. <classname>Zend_Config_Writer</classname> ausgeliefert:
  17. </para>
  18. <itemizedlist>
  19. <listitem>
  20. <para>
  21. <classname>Zend_Config_Writer_Array</classname>
  22. </para>
  23. </listitem>
  24. <listitem>
  25. <para>
  26. <classname>Zend_Config_Writer_Ini</classname>
  27. </para>
  28. </listitem>
  29. <listitem>
  30. <para>
  31. <classname>Zend_Config_Writer_Xml</classname>
  32. </para>
  33. </listitem>
  34. </itemizedlist>
  35. <para>
  36. Als Ausnahme hat <classname>Zend_Config_Writer_Ini</classname> einen zusätzlichen optionalen
  37. Parameter <code>nestSeparator</code>, welche definiert mit welchem Zeichen die einzelnen
  38. Nodes getrennt werden. Der Standard ist ein einzelner Punkt, wie er standardmäßig von
  39. <classname>Zend_Config_Ini</classname> akzeptiert wird.
  40. </para>
  41. <para>
  42. Wenn ein <classname>Zend_Config</classname> Objekt geändert oder erstellt wird, muß man
  43. einige Dinge wissen. Um einen Wert zu erstellen oder zu ändern muß einfach der Parameter des
  44. <classname>Zend_Config</classname> Objektes über den Zugriffsaccessor (<code>-&gt;</code>)
  45. gesetzt werden. Um eine Sektion im Root oder im Branch zu erstellen muß einfach ein neues
  46. Aray erstellt werden (<code>$config-&gt;branch = array();</code>). Um zu definieren welche
  47. Sektion eine andere erweitert, muß die <code>setExtend()</code> Methode am Root
  48. <classname>Zend_Config</classname> Objekt aufgerufen werden.
  49. </para>
  50. <example id="zend.config.writer.example.using">
  51. <title>Verwenden von Zend_Config_Writer</title>
  52. <para>
  53. Dieses Beispiel zeigt die grundsätzliche Verwendung von
  54. <classname>Zend_Config_Writer_Xml</classname> um eine neue Konfigurationsdatei zu
  55. erstellen:
  56. </para>
  57. <programlisting language="php"><![CDATA[
  58. // Ein neues Config Objekt erstellen
  59. $config = new Zend_Config(array(), true);
  60. $config->production = array();
  61. $config->staging = array();
  62. $config->setExtend('staging', 'production');
  63. $config->production->db = array();
  64. $config->production->db->hostname = 'localhost';
  65. $config->production->db->username = 'production';
  66. $config->staging->db = array();
  67. $config->staging->db->username = 'staging';
  68. // Die Config Datei auf einem der folgenden Wege schreiben:
  69. // a)
  70. $writer = new Zend_Config_Writer_Xml(array('config' => $config,
  71. 'filename' => 'config.xml'));
  72. $writer->write();
  73. // b)
  74. $writer = new Zend_Config_Writer_Xml();
  75. $writer->setConfig($config)
  76. ->setFilename('config.xml')
  77. ->write();
  78. // c)
  79. $writer = new Zend_Config_Writer_Xml();
  80. $writer->write('config.xml', $config);
  81. ]]></programlisting>
  82. <para>
  83. Das erstellt eine XML Config Datei mit den Sektionen production und staging, wobei
  84. staging production erweitert.
  85. </para>
  86. </example>
  87. <example id="zend.config.writer.modifying">
  88. <title>Eine bestehende Config ändern</title>
  89. <para>
  90. Dieses Beispiel zeigt wie eine bestehende Config Datei bearbeitet werden kann.
  91. </para>
  92. <programlisting language="php"><![CDATA[
  93. // Lädt alle Sektionen einer bestehenden Config Datei, und überspringt
  94. // alle Erweiterungen
  95. $config = new Zend_Config_Ini('config.ini',
  96. null,
  97. array('skipExtends' => true,
  98. 'allowModifications' => true));
  99. // Ändere einen Wert
  100. $config->production->hostname = 'foobar';
  101. // Schreibe die Config Datei
  102. $writer = new Zend_Config_Writer_Ini(array('config' => $config,
  103. 'filename' => 'config.ini'));
  104. $writer->write();
  105. ]]></programlisting>
  106. </example>
  107. <note>
  108. <title>Laden einer Config Datei</title>
  109. <para>
  110. Beim Laden einer bestehenden Config Datei für eine Änderung ist es sehr wichtig das alle
  111. Sektionen geladen werden und die Erweiterungen übersprungen werden, sodas keine Werte
  112. zusammengefügt werden. Das wird durch die Übergabe von <code>skipExtends</code> als
  113. Option an den Constructor durchgeführt.
  114. </para>
  115. </note>
  116. </sect1>
  117. <!--
  118. vim:se ts=4 sw=4 et:
  119. -->