Zend_Tool_Framework-Extending.xml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.tool.framework.extending">
  5. <title>Extending and Configuring Zend_Tool_Framework</title>
  6. <sect2 id="zend.tool.framework.console-client">
  7. <title>Anpassen des Zend_Tool Konsolen Clients</title>
  8. <para>
  9. Mit Zend Framework 1.9 erlaubt es <classname>Zend_Tool_Framework</classname> Entwicklern
  10. Informationen zu Speichern, Provider spezifische Konfigurationswerte, und eigene Dateien
  11. an einem speziellen Ort auf der Entwicklermaschine. Diese Konfigurationswerte und
  12. Dateien können von Providern verwendet werden um Funktionalität zu erweitern, sie
  13. anzupassen, oder aus einem anderen Grund welcher dem Provider passt.
  14. </para>
  15. <para>
  16. Der primäre Zwecke, und der warscheinlich wichtigste der von existierenden Providern
  17. verwendet wird, besteht darin es Entwicklern zu erlauben den Weg wie die
  18. "out of the box" Provider funktionieren zu verändern.
  19. </para>
  20. <para>
  21. Eines der üblichsten angefragten Features ist es, in der Lage zu sein
  22. <classname>Zend_Tool_Project</classname>'s Projekt Provider eigene Projekt Profile
  23. anzubieten. Das würde es Entwicklern erlauben ein eigenes Profil an einem speziellen
  24. Platz zu speichern, der wiederholt vom <classname>Zend_Tool</classname> System verwendet
  25. werden kann um eigene Profile zu erstellen. Ein anderes üblicherweise angefragtes
  26. Feature ist es in der Lage zu sein das Verhalten von Providern mit
  27. Konfigurationseinstellungen zu verändern. Um das zu tun benötigen wir nicht nur eine
  28. <classname>Zend_Tool</classname> Konfigurationsdatei, sondern auch einen Ort an dem wir
  29. diese Konfigurationsdatei finden können.
  30. </para>
  31. <sect3 id="zend.tool.framework.console-client.home-directory">
  32. <title>Das Home Verzeichnis</title>
  33. <para>
  34. Bevor der Konsolen Client beginnen kann nach einer <classname>Zend_Tool</classname>
  35. Konfigurationsdatei zu suchen, oder einem lokalen Speicherverzeichnis, muß er
  36. zuerst in der Lage sein zu erkennen wo das "Home Verzeichnis" liegt.
  37. </para>
  38. <para>
  39. Auf *nix basierten Maschinen, wird <acronym>PHP</acronym> mit einer
  40. Umgebungsvariable die <constant>HOME</constant> heißt, und dem Pfad zum Home
  41. Verzeichnis des aktuellen Benutzers, bekannt gegeben. Typischerweise ist dieser
  42. Pfad ähnlich wie <filename>/home/myusername</filename>.
  43. </para>
  44. <para>
  45. Auf Windows basierten Maschinen, wird <acronym>PHP</acronym> typischerweise mit
  46. einer Umgebungsvariable die <constant>HOMEPATH</constant> heißt, und dem Pfad zum
  47. Home Verzeichnis des aktuellen Benutzers, bekannt gegeben. Das Verzeichnis kann
  48. normalerweise, entweder unter
  49. <filename>C:\Documents and Settings\Username\</filename>, oder bei Vista unter
  50. <filename>C:\Users\Username</filename> gefunden werden.
  51. </para>
  52. <para>
  53. Wenn entweder das Home Verzeichnis nicht gefunden werden kann, oder man den Ort an
  54. dem der <classname>Zend_Tool_Framework</classname> Konsolen Client das Home
  55. Verzeichnis findet, ändern will kann man eine Umgebungsvariable die
  56. <constant>ZF_HOME</constant> heißt angeben um zu spezifizieren wo das Home
  57. Verzeichnis gefunden werden kann.
  58. </para>
  59. </sect3>
  60. <sect3 id="zend.tool.framework.console-client.local-storage">
  61. <title>Lokaler Speicher</title>
  62. <para>
  63. Sobald das Home Verzeichnis gefunden werden kann, kann
  64. <classname>Zend_Tool_Framework</classname>'s Konsolen Client entweder das lokale
  65. Speicher Verzeichnis automatisch erkennen, oder es kann Ihm mitgeteilt werden wo
  66. das lokale Speicherverzeichnis erwartet wird.
  67. </para>
  68. <para>
  69. Angenommen das Home Verzeichnis wurde gefunden (hier als <varname>$HOME</varname>
  70. bezeichnet), dann wird der Konsolen client nach dem lokalen Speicherverzeichnis
  71. unter <filename>$HOME/.zf/</filename> nachsehen. Wenn es gefunden wird, dann wird
  72. das lokale Speicherverzeichnis auf diesen Ort gesetzt.
  73. </para>
  74. <para>
  75. Wenn das Verzeichnis nicht gefunden werden kann, oder der Entwickler den Ort
  76. überschreiben will, kann man das durch Setzen einer Umgebungsvariable durchführen.
  77. Unabhängig davon ob <varname>$HOME</varname> vorher gesetzt wurde, kann der
  78. Entwickler die Umgebungsvariable <constant>ZF_STORAGE_DIR</constant> anbieten.
  79. </para>
  80. <para>
  81. Sobald der Pfad zu einem lokalen Speicherverzeichnis gefunden wurde,
  82. <emphasis>muss</emphasis> das Verzeichnis existieren damit es an die
  83. <classname>Zend_Tool_Framework</classname> Runtime übergeben werden kann, da dieses
  84. für Sie nicht erstellt wird.
  85. </para>
  86. </sect3>
  87. <sect3 id="zend.tool.framework.console-client.configuration-file">
  88. <title>Benutzer Konfiguration</title>
  89. <para>
  90. Wie beim lokalen Speicher kann <classname>Zend_Tool_Framework</classname>'s
  91. Konsolen Client, sobald ein Home Verzeichnis gefunden wurde, entweder versuchen den
  92. Pfad zu einer Konfigurationsdatei autoamtisch zu erkennen, oder es kann Ihm ganz
  93. spezifisch gesagt werden wo die Konfigurationsdatei gefunden werden kann.
  94. </para>
  95. <para>
  96. Angenommen das Home Verzeichnis wurde gefunden (hier als <varname>$HOME</varname>
  97. bezeichnet), dann wird der Konsolen Client versuchen nach der Existenz einer
  98. Konfigurationsdatei zu sehen die in <filename>$HOME/.zf.ini</filename> liegt.
  99. Diese Datei wird, wenn Sie gefunden wurde, als Konfigurationsdatei für
  100. <classname>Zend_Tool_Framework</classname> verwendet.
  101. </para>
  102. <para>
  103. Wenn der Ort nicht existiert, aber das lokale Speicherverzeichnis, dann wird der
  104. Konsolen Client versuchen die Konfigurationsdatei im lokalen Speicherverzeichnis zu
  105. finden. Angenommen das lokale Speicherverzeichnis existiert in
  106. <varname>$LOCAL_STORAGE</varname>, und eine Datei existiert als
  107. <filename>$LOCAL_STORAGE/zf.ini</filename>, dann wird diese vom Konsolen Client
  108. gefunden und als <classname>Zend_Tool_Framework</classname> Konfigurationsdatei
  109. verwendet.
  110. </para>
  111. <para>
  112. Wenn die Datei nicht automatisch erkannt werden kann, oder der Entwickler den Ort
  113. der Konfigurationsdatei spezifizieren will, kann er das durch Setzen einer
  114. Umgebungsvariable tun. Wenn die Umgebungsvariable
  115. <constant>ZF_CONFIG_FILE</constant> gesetzt ist, dann wird dieser Wert als Ort der
  116. Konfigurationsdatei verwendet die mit dem Konsolen Client zu verwenden ist.
  117. <constant>ZF_CONFIG_FILE</constant> kann auf irgendeine <acronym>INI</acronym>,
  118. <acronym>XML</acronym> oder <acronym>PHP</acronym> Datei zeigen die
  119. <classname>Zend_Config</classname> lesen kann.
  120. </para>
  121. <para>
  122. Wenn die Datei weder an der automatisch erkannten, noch an der angegebenen Position
  123. existiert, dann wird Sie nicht verwendet da
  124. <classname>Zend_Tool_Framework</classname> nicht versucht diese Datei automatisch
  125. zu erstellen.
  126. </para>
  127. </sect3>
  128. <sect3 id="zend.tool.framework.console-client.configuration-content">
  129. <title>Inhalt der Benutzer Konfigurationsdatei</title>
  130. <para>
  131. Die Konfigurationdatei sollte als <classname>Zend_Config</classname>
  132. Konfigurationdatei, im <acronym>INI</acronym> format, strukturiert sein und ohne
  133. zusätzliche definierte Sektionen. Schlüssel des ersten Levels sollten vom Provider
  134. verwendet werden um nach einem speziellen Wert zu suchen. Wenn der "Project"
  135. Provider zum Beispiel ein "profiles" Verzeichnis erwartet, dann sollte
  136. typischerweise darunter verstanden werden das er im folgenden Schlüssel Wertpaar
  137. gesucht wird:
  138. </para>
  139. <programlisting language="php"><![CDATA[
  140. project.profile = irgendein/pfad/zu/irgendeinem-verzeichnis
  141. ]]></programlisting>
  142. <para>
  143. Der einzige reservierte <acronym>INI</acronym> Präfix ist der Wert "php". Der "php"
  144. Präfix für Werte ist reserviert um Namen und Werte, von während der Laufzeit
  145. setzbaren <acronym>PHP</acronym> Werte, zu setzen, wie
  146. <property>include_path</property> oder <property>error_reporting</property>. Um
  147. <property>include_path</property> oder <property>error_reporting</property> mit
  148. einem <acronym>INI</acronym> Wert zu überschreiben, würde ein Entwickler folgendes
  149. setzen:
  150. </para>
  151. <programlisting language="php"><![CDATA[
  152. php.include_path = "/path/to/includes1:/path/to/includes2"
  153. php.error_reporting = 1
  154. ]]></programlisting>
  155. <important>
  156. <para>
  157. Der reservierte Prefix "php" funktioniert nur mit <acronym>INI</acronym>
  158. Dateien. Man kann <acronym>PHP</acronym> <acronym>INI</acronym> Werte nicht in
  159. <acronym>PHP</acronym> oder <acronym>XML</acronym> Konfigurationen setzen.
  160. </para>
  161. </important>
  162. </sect3>
  163. </sect2>
  164. </sect1>