[MANUAL] German:
[zend.git] / documentation / manual / de / tutorials / quickstart-create-project.xml
blob70383819321a5b8bbf1fdcd538044b8a207a8194
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21917 -->
3 <!-- Reviewed: no -->
4 <sect1 id="learning.quickstart.create-project">
5     <title>Das Projekt erstellen</title>
7     <para>
8         Um das eigene Projekt zu erstellen muss man zuerst Zend Framework herunterladen und
9         extrahieren.
10     </para>
12     <sect2 id="learning.quickstart.create-project.install-zf">
13         <title>Zend Framework installieren</title>
15         <para>
16             Der einfachste Weg um Zend Framework zusammen mit einem kompletten
17             <acronym>PHP</acronym> Stack zu erhalten ist durch die Installation von <ulink
18                 url="http://www.zend.com/en/products/server-ce/downloads">Zend Server</ulink>.
19             Zend Server hat native Installationsroutinen für Mac OSX, Windows, Fedora Core und
20             Ubuntu, sowie ein universelles Installationspaket das mit den meisten Linux
21             Distributionen kompatibel ist.
22         </para>
24         <para>
25             Nachdem Zend Server installiert wurde, können die Framework Dateien bei Max OSX und
26             Linux unter <filename>/usr/local/zend/share/ZendFramework</filename>, und bei Windows
27             unter <filename>C:\Program Files\Zend\ZendServer\share\ZendFramework</filename> gefunden
28             werden. Der <constant>include_path</constant> ist dann bereits konfiguriert um Zend
29             Framework zu verwenden.
30         </para>
32         <para>
33             Alternativ kann man <ulink url="http://framework.zend.com/download/latest">die letzte
34             Version vom Zend Framework downloaden</ulink> und dessen Inhalt extrahieren; man sollte
35             sich notieren wo man das tut.
36         </para>
38         <para>
39             Optional kann der Pfad zum Unterverzeichnis <filename>library/</filename> des Archivs
40             den eigenen <constant>include_path</constant> Einstellung in der
41             <filename>php.ini</filename> hinzugefügt werden.
42         </para>
44         <para>
45             Das ist es! Zend Framework ist jetzt installiert und bereit zur Verwendung.
46         </para>
47     </sect2>
49     <sect2 id="learning.quickstart.create-project.create-project">
50         <title>Das Projekt erstellen</title>
52         <note>
53             <title>zf Kommandozeilen Tool</title>
55             <para>
56                 In der eigenen Zend Framework Installation ist ein Unterverzeichnis
57                 <filename>bin/</filename> welches die Skripte <filename>zf.sh</filename> und
58                 <filename>zf.bat</filename>, für Unix-basierende und Windows-basierende Benutzer
59                 enthält. Der absolute Pfad zu diesem Skript sollte notiert werden.
60             </para>
62             <para>
63                 Wo immer man einer Referenz auf den Befehl <filename>zf</filename> sieht, sollte der
64                 absolute Pfad zum Skript substituiert werden. Auf Unix-basierenden Systemen, könnte
65                 man die Alias Funktionalität der Shell verwenden:
66                 <command>alias zf.sh=path/to/ZendFramework/bin/zf.sh</command>.
67             </para>
69             <para>
70                 Wenn man Probleme hat das <command>zf</command> Kommandozeilen Tool zu konfigurieren
71                 sollte man in <link linkend="zend.tool.framework.clitool">das
72                     Handbuch</link> sehen.
73             </para>
74         </note>
76         <para>
77             Ein Terminal öffnen (in Windows, <command>Start -> Run</command> und anschließend
78             <command>cmd</command> verwenden). Zum Verzeichnis in dem man das Projekt beginnen will
79             navigieren. Anschließend den Pfad zum richtigen Skript verwenden und eines der folgenden
80             ausführen:
81         </para>
83         <programlisting language="shell"><![CDATA[
84 % zf create project quickstart
85 ]]></programlisting>
87         <para>
88             Die Ausführung dieses Kommandos erstellt die grundsätzliche Site Struktur, inklusive den
89             initialen Controllern und Views. Der Baum sieht wie folgt aus:
90         </para>
92         <programlisting language="text"><![CDATA[
93 quickstart
94 |-- application
95 |   |-- Bootstrap.php
96 |   |-- configs
97 |   |   `-- application.ini
98 |   |-- controllers
99 |   |   |-- ErrorController.php
100 |   |   `-- IndexController.php
101 |   |-- models
102 |   `-- views
103 |       |-- helpers
104 |       `-- scripts
105 |           |-- error
106 |           |   `-- error.phtml
107 |           `-- index
108 |               `-- index.phtml
109 |-- library
110 |-- public
111 |   |-- .htaccess
112 |   `-- index.php
113 `-- tests
114     |-- application
115     |   `-- bootstrap.php
116     |-- library
117     |   `-- bootstrap.php
118     `-- phpunit.xml
119 ]]></programlisting>
121         <para>
122             Wenn man an diesem Punkt, Zend Framework dem eigenen <constant>include_path</constant>
123             nicht hunzugefügt hat, empfehlen wir Ihn entweder in das eigene
124             <filename>library/</filename> Verzeichnis zu kopieren oder zu symlinken. In jedem Fall
125             sollte man entweder das <filename>library/Zend/</filename> Verzeichnis der Zend
126             Framework Installation rekursiv in das <filename>library/</filename> Verzeichnis des
127             Projekts kopieren oder symlinken. Auf unix-artigen Systemen würde das wie folgt
128             aussehen:
129         </para>
131         <programlisting language="shell"><![CDATA[
132 # Symlink:
133 % cd library; ln -s path/to/ZendFramework/library/Zend .
135 # Copy:
136 % cd library; cp -r path/to/ZendFramework/library/Zend .
137 ]]></programlisting>
139         <para>
140             Auf Windows Systemen ist es am einfachsten das vom Explorer zu tun.
141         </para>
143         <para>
144             Jetzt da das Projekt erstellt wurde, sind die hauptsächlichen Artefakte die man
145             verstehen sollte, die Bootstrap, die Konfiguration, die Action Controller und die Views.
146         </para>
147     </sect2>
149     <sect2 id="learning.quickstart.create-project.bootstrap">
150         <title>Die Bootstrap</title>
152         <para>
153             Die <classname>Bootstrap</classname> Klasse definiert welche Ressourcen und Komponenten
154             zu initialisieren sind. Standardmäßig wird Zend Framework's <link
155                 linkend="zend.controller.front">Front Controller</link> initialisiert und er
156             verwendet <filename>application/controllers/</filename> als Standardverzeichnis in dem
157             nach Action Controllern nachgesehen wird (mehr davon später). Die Klasse sieht wie
158             folgt aus:
159         </para>
161         <programlisting language="php"><![CDATA[
162 // application/Bootstrap.php
164 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
167 ]]></programlisting>
169         <para>
170             Wie man sieht ist nicht viel notwendig um zu beginnen.
171         </para>
172     </sect2>
174     <sect2 id="learning.quickstart.create-project.configuration">
175         <title>Konfiguration</title>
177         <para>
178             Wärend Zend Framework selbst konfigurationslos ist, ist es oft notwendig die eigene
179             Anwendung zu konfigurieren. Die Standardkonfiguration wird in
180             <filename>application/configs/application.ini</filename> platziert und enthält einige
181             grundsätzliche Direktiven für die Einstellung der <acronym>PHP</acronym> Umgebung (zum
182             Beispiel ein- und ausschalten der Fehlermeldungen), zeigt den Pfad zur eigenen Bootstrap
183             Klasse (wie auch dessen Klassenname), und den Pfad zu den eigenen Action Controllern.
184             Das sieht wie folgt aus:
185         </para>
187         <programlisting language="ini"><![CDATA[
188 ; application/configs/application.ini
190 [production]
191 phpSettings.display_startup_errors = 0
192 phpSettings.display_errors = 0
193 includePaths.library = APPLICATION_PATH "/../library"
194 bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
195 bootstrap.class = "Bootstrap"
196 appnamespace = "Application"
197 resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
198 resources.frontController.params.displayExceptions = 0
200 [staging : production]
202 [testing : production]
203 phpSettings.display_startup_errors = 1
204 phpSettings.display_errors = 1
206 [development : production]
207 phpSettings.display_startup_errors = 1
208 phpSettings.display_errors = 1
209 ]]></programlisting>
211         <para>
212             Verschiedene Dinge sollten über diese Datei gesagt werden. Erstens kann man, wenn
213             <acronym>INI</acronym>-artige Konfigurationen verwendet werden, direkt auf Konstanten
214             referenzieren und Sie erweitern; <constant>APPLICATION_PATH</constant> selbst ist eine
215             Konstante. Zusätzlich ist zu beachten das es verschiedene definierte Sektionen gibt:
216             production, staging, testing, und development. Die letzten drei verweisen auf
217             Einstellungen der "production" Umgebung. Das ist ein nützlicher Weg die Konfiguration zu
218             organisieren und stellt sicher das die richtigen Einstellungen in jeder Stufe der
219             Anwendungsentwicklung vorhanden sind.
220         </para>
221     </sect2>
223     <sect2 id="learning.quickstart.create-project.action-controllers">
224         <title>Action Controller</title>
226         <para>
227             Die <emphasis>Action Controller</emphasis> der Anwendung enthalten den Workflow der
228             Anwendung und mappen eigene Anfragen auf die richtigen Modelle und Views.
229         </para>
231         <para>
232             Ein Action Controller sollte ein oder mehrere Methoden haben die auf "Action" enden;
233             diese Methoden können über das Web abgefragt werden. Standardmäßig folgen Zend Framework
234             URL's dem Schema <constant>/controller/action</constant> wobei "controller" auf den
235             Namen des Action Controllers verweist (ohne den "Controller" Suffix) und "action" auf
236             eine Action Methode verweist (ohne den "Action" Suffix).
237         </para>
239         <para>
240             Typischerweise benötigt man immer einen <classname>IndexController</classname>, der ein
241             Fallback Controller ist und auch als Homepage der Site arbeitet, und einen
242             <classname>ErrorController</classname> der verwendet wird um Dinge wie
243             <acronym>HTTP</acronym> 404 Fehler zu zeigen (wenn der Controller oder die Action nicht
244             gefunden wird) und <acronym>HTTP</acronym> 500 Fehler (Anwendungsfehler).
245         </para>
247         <para>
248             Der standardmäßige <classname>IndexController</classname> ist wie folgt:
249         </para>
251         <programlisting language="php"><![CDATA[
252 // application/controllers/IndexController.php
254 class IndexController extends Zend_Controller_Action
257     public function init()
258     {
259         /* Den Action Controller hier initialisieren */
260     }
262     public function indexAction()
263     {
264         // Action Body
265     }
267 ]]></programlisting>
269         <para>
270             Und der standardmäßige <classname>ErrorController</classname> ist wie folgt:
271         </para>
273         <programlisting language="php"><![CDATA[
274 // application/controllers/ErrorController.php
276 class ErrorController extends Zend_Controller_Action
279     public function errorAction()
280     {
281         $errors = $this->_getParam('error_handler');
283         switch ($errors->type) {
284             case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
285             case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
286             case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
288                 // 404 Fehler -- Controller oder Action nicht gefunden
289                 $this->getResponse()->setHttpResponseCode(404);
290                 $this->view->message = 'Page not found';
291                 break;
292             default:
293                 // Anwendungsfehler
294                 $this->getResponse()->setHttpResponseCode(500);
295                 $this->view->message = 'Application error';
296                 break;
297         }
299         $this->view->exception = $errors->exception;
300         $this->view->request   = $errors->request;
301     }
303 ]]></programlisting>
305         <para>
306             Es ist zu sehen das (1) der <classname>IndexController</classname> keinen echten Code
307             enthält, und (2) der <classname>ErrorController</classname> auf eine "view" Eigenschaft
308             verweist. Das führt schon zu unserem nächsten Subjekt.
309         </para>
310     </sect2>
312     <sect2 id="learning.quickstart.create-project.views">
313         <title>Views</title>
315         <para>
316             Views werden im Zend Framework in reinem alten <acronym>PHP</acronym> geschrieben. View
317             Skripte werden unter <filename>application/views/scripts/</filename> platziert, wo Sie
318             weiters kategorisiert werden indem der Name des Controllers verwendet wird. In unserem
319             Fall haben wir einen <classname>IndexController</classname> und einen
320             <classname>ErrorController</classname>, und deshalb haben wir entsprechende
321             <filename>index/</filename> und <filename>error/</filename> Unterverzeichnisse in
322             unserem View Skript Verzeichnis. In diesem Unterverzeichnissen finden und erstellen wir
323             anschließend View Skripte die jeder ausgeführten Controller Action entsprechen; im
324             Standardfall haben wir die View Skripte <filename>index/index.phtml</filename> und
325             <filename>error/error.phtml</filename>.
326         </para>
328         <para>
329             View Skripte können jedes Markup enthalten das man haben will, und verwenden das
330             öffnende <code>&lt;?php</code> Tag und das schließende <code>?&gt;</code> Tag um
331             <acronym>PHP</acronym> Direktiven einzufügen.
332         </para>
334         <para>
335             Das folgende wird standardmäßig für das <filename>index/index.phtml</filename> View
336             Skript installiert:
337         </para>
339         <programlisting language="php"><![CDATA[
340 <!-- application/views/scripts/index/index.phtml -->
341 <style>
343     a:link,
344     a:visited
345     {
346         color: #0398CA;
347     }
349     span#zf-name
350     {
351         color: #91BE3F;
352     }
354     div#welcome
355     {
356         color: #FFFFFF;
357         background-image: url(http://framework.zend.com/images/bkg_header.jpg);
358         width:  600px;
359         height: 400px;
360         border: 2px solid #444444;
361         overflow: hidden;
362         text-align: center;
363     }
365     div#more-information
366     {
367         background-image: url(http://framework.zend.com/images/bkg_body-bottom.gif);
368         height: 100%;
369     }
371 </style>
372 <div id="welcome">
373     <h1>Willkommen zum <span id="zf-name">Zend Framework!</span><h1 />
374     <h3>Das ist die Hauptseite unseres Projekts<h3 />
375     <div id="more-information">
376         <p>
377             <img src="http://framework.zend.com/images/PoweredBy_ZF_4LightBG.png" />
378         </p>
380         <p>
381             Hilfreiche Links: <br />
382             <a href="http://framework.zend.com/">Zend Framework Website</a> |
383             <a href="http://framework.zend.com/manual/en/">Zend Framework
384                 Handbuch</a>
385         </p>
386     </div>
387 </div>
388 ]]></programlisting>
390         <para>
391             Das <filename>error/error.phtml</filename> View Skript ist etwas interessanter da es
392             einige <acronym>PHP</acronym> Konditionen verwendet:
393         </para>
395         <programlisting language="php"><![CDATA[
396 <!-- application/views/scripts/error/error.phtml -->
397 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN";
398     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
399 <html xmlns="http://www.w3.org/1999/xhtml">
400 <head>
401   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
402   <title>Zend Framework Standardanwendung</title>
403 </head>
404 <body>
405   <h1>Ein Fehler ist aufgetreten</h1>
406   <h2><?php echo $this->message ?></h2>
408   <?php if ('development' == $this->env): ?>
410   <h3>Information der Exception:</h3>
411   <p>
412       <b>Nachricht:</b> <?php echo $this->exception->getMessage() ?>
413   </p>
415   <h3>Stack Trace:</h3>
416   <pre><?php echo $this->exception->getTraceAsString() ?>
417   </pre>
419   <h3>Anfrage Parameter:</h3>
420   <pre><?php echo var_export($this->request->getParams(), 1) ?>
421   </pre>
422   <?php endif ?>
424 </body>
425 </html>
426 ]]></programlisting>
427     </sect2>
429     <sect2 id="learning.quickstart.create-project.vhost">\r
430         <title>Einen virtuellen Host erstellen</title>\r
432         <para>
433             Für die Zwecke dieses Quickstarts nehmen wir an das der <ulink\r
434                 url="http://httpd.apache.org/">Apache Web Server</ulink> verwendet wird. Zend
435             Framework arbeitet auch perfekt mit anderen Web Server -- inklusive Microsoft
436             Internet Information Server, Lighttpd, Nginx und andere -- aber die meisten
437             Entwickler sollten zumindest mit Apache umgehen können, und es bietet eine einfache
438             Einführung in Zend Framework's Verzeichnisstruktur und die Möglichkeiten des
439             Rewritings.
440         </para>\r
442         <para>
443             Um den eigenen VHost zu erstellen muss man den Ort der eigenen
444             <filename>httpd.conf</filename> Datei kennen und potentiell auch wo andere
445             Konfigurationsdateien platziert sind. Einige übliche Orte sind:\r
446         </para>\r
448         <itemizedlist>\r
449             <listitem>\r
450                 <para>\r
451                     <filename>/etc/httpd/httpd.conf</filename> (Fedora, RHEL, und andere)\r
452                 </para>\r
453             </listitem>\r
455             <listitem>\r
456                 <para>\r
457                     <filename>/etc/apache2/httpd.conf</filename> (Debian, Ubuntu, und andere)\r
458                 </para>\r
459             </listitem>\r
461             <listitem>\r
462                 <para>\r
463                     <filename>/usr/local/zend/etc/httpd.conf</filename> (Zend Server auf *nix\r
464                     Maschinen)\r
465                 </para>\r
466             </listitem>\r
468             <listitem>\r
469                 <para>\r
470                     <filename>C:\Program Files\Zend\Apache2\conf</filename> (Zend Server auf Windows\r
471                     Maschinen)\r
472                 </para>\r
473             </listitem>\r
474         </itemizedlist>\r
476         <para>
477             In der eigenen <filename>httpd.conf</filename> (oder
478             <filename>httpd-vhosts.conf</filename> auf anderen Systemen) muss man zwei Dinge tun.
479             Erstens sicherstellen das der <varname>NameVirtualHost</varname> definiert ist;
480             typischerweise wird man Ihn auf einen Wert von "*:80" setzen. Zweitens einen
481             virtuellen Host definieren:\r
482         </para>\r
484         <programlisting language="apache"><![CDATA[\r
485 <VirtualHost *:80>\r
486     ServerName quickstart.local\r
487     DocumentRoot /path/to/quickstart/public\r
489     SetEnv APPLICATION_ENV "development"\r
491     <Directory /path/to/quickstart/public>\r
492         DirectoryIndex index.php\r
493         AllowOverride All\r
494         Order allow,deny\r
495         Allow from all\r
496     </Directory>\r
497 </VirtualHost>\r
498 ]]></programlisting>\r
500         <para>
501             Es gilt verschiedene Dinge zu beachten. Erstens ist zu beachten dass die
502             <varname>DocumentRoot</varname> Einstellung das Unterverzeichnis
503             <filename>public</filename> des eigenen Projekts spezifiziert; dies bedeutet das nur
504             Dateien in diesem Verzeichnis jemals direkt vom Server serviert werden. Zweitens sind
505             die Direktiven <varname>AllowOverride</varname>, <varname>Order</varname>, und
506             <varname>Allow</varname> zu beachten; diese erlauben uns <filename>htacess</filename>
507             Dateien in unserem Projekt zu verwenden. Wärend der Entwicklung ist das eine gute
508             Praxis, da es verhindert den Web Server konstant zurücksetzen zu müssen wenn man
509             Änderungen in den Site Direktiven macht; trotzdem sollte man in der Produktion den
510             Inhalt der <filename>htacess</filename> Datei in die Server Konfiguration verschieben
511             und diese deaktivieren. Drittens ist die <varname>SetEnv</varname> Direktive zu
512             beachten. Was wir hier erledigen ist das Setzen einer Umgebungsvariable für den
513             eigenen virtuellen Host; diese Variable wird in der <filename>index.php</filename>
514             geholt und verwendet um die Konstante <constant>APPLICATION_ENV</constant> für unsere
515             Zend Framework Anwendung zu setzen. In der Produktion kann diese Direktive unterdrückt
516             werden (in diesem Fall wird es auf den Standardwert "production" verweisen) oder Sie
517             explizit auf "production" setzen.
518         </para>\r
520         <para>
521             Letztendlich muss man einen Eintrag in der eigenen <filename>hosts</filename> Datei
522             hinzufügen welche mit dem Wert korrespondiert der in der <varname>ServerName</varname>
523             Direktive plaziert wurde. Auf *nix-artigen Systemen ist das normalerweise
524             <filename>/etc/hosts</filename>; auf Windows findet man typischerweise
525             <filename>C:\WINDOWS\system32\drivers\etc</filename> in Ihm. Unabhängig vom System
526             sieht der Eintrag wie folgt aus:
527         </para>\r
529         <programlisting language="text"><![CDATA[\r
530 127.0.0.1 quickstart.local\r
531 ]]></programlisting>\r
533         <para>
534             Den Webserver starten (oder ihn Restarten), und man sollte bereit sein weiterzumachen.\r
535         </para>\r
536     </sect2>\r
538     <sect2 id="learning.quickstart.create-project.checkpoint">
539         <title>Checkpoint</title>
541         <para>
542             An diesem Punkt sollte man in der Lage sein die initiale Zend Framework Anwendung
543             auszuführen. Der Browser sollte auf den Servernamen zeigen welcher im vorherigen
544             Abschnitt konfiguriert wurde; ab diesem Zeitpunkt sollte man in der Lage sein die
545             Startseite zu sehen.
546         </para>
547     </sect2>
548 </sect1>