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