© DrHitch/Shutterstock.com
Zend Framework 2

1 Eine Einführung in die Neuerungen im Zend Framework 2


Nach mehrjähriger Arbeit ist am 4. September 2012 die erste stabile Version vom Zend Framework 2 erschienen. Wer sich in der langen Entwicklungsphase nur sporadisch mit dem neuen ZF2 auseinandergesetzt hat, wird sich zu Beginn von den Veränderungen erschlagen fühlen. Dieses Kapitel soll die wesentlichen Änderungen zusammenfassen und Hilfestellung beim Einstieg geben.

Nach einer kurzen Einführung in das ZF2-Ecosystem fahren wir mit der Installation der Skeleton Application fort. Auf Basis dieses Gerüsts gehen wir auf die neuen Konzepte des Zend Framework 2 ein. Zum Ende folgt die Installation von weiteren Modulen.

Wichtiger Hinweis: Alle Listings dieses shortcuts stehen bei GitHub bereit [1] und können geklont oder als ZIP heruntergeladen werden.

Das ZF2-Ecosystem

Mit dem Erscheinen der stabilen Version 2.0.0 wurde die frameworkbegleitende Website [2] überarbeitet, der gesamte Programmcode lässt sich auf GitHub einsehen und forken [3]. Die Website legt einen Schwerpunkt auf das ZF2, das ZF1 kommt aber nicht zu kurz. Neben den FAQ finden sich dort Informationen zu Training, Zertifizierung und Support. Ein Einsteiger-Tutorial, das Referenzhandbuch sowie die API-Dokumentation sind ebenso zu finden wie ein ausführlicher Bereich, der die Möglichkeiten zur Installation des ZF2 zusammenfasst. Informationen, wie sich interessierte Nutzer an der Weiterentwicklung des Zend Framework beteiligen können, runden das Angebot der Website ab.

Übersichtlicher als auf der Hauptwebsite kommt die Dokumentation auf der Plattform readthedocs.org daher [4]. Dazu noch eine kleine Warnung: das Referenzhandbuch war bei Erscheinen der 2.0.0-Version noch unvollständig. Während ich diese Zeilen schreibe, arbeitet das Entwicklerteam jedoch daran, die fehlende Dokumentation nachzureichen und unvollständige zu ergänzen.

Eine weitere spezialisierte Website beschäftigt sich mit den Installationsmöglichkeiten für das Zend Framework 2 [5]. Hier werden die Source-Pakete zum Download angeboten. Die Installation einzelner Pakete mit Pyrus (auch als PEAR Installer bekannt) wird ebenso erläutert wie die Installation mit Composer [6]. Links zu den GitHub-Quellen sowie weitere Links helfen Einsteigern und Profis bei der Installation.

An dieser Stelle sei auch die neue ZF2-Module-Website erwähnt [7]. Die Seite befindet sich im Aufbau und hat sich zum Ziel gesetzt, erste Anlaufstelle für die Suche nach ZF2-Modulen zu sein. Noch ist das Angebot ungeordnet und es fällt schwer, die Spreu vom Weizen zu trennen. Eine Abstimmfunktion und die Durchsuchbarkeit sollen dem Nutzer später helfen, die passenden Module für das eigene Projekt zu finden.

Für alle, die sich intensiver mit der Weiterentwicklung des Frameworks auseinandersetzen möchten, sei das ZF2 Wiki empfohlen [8]. Dort finden sich Informationen zu Meilensteinen, neuen Proposals und RFCs (Request for Comment) sowie die IRC-Meeting-Logs zum Nachlesen.

Bereits erwähnt wurde GitHub. Wurde für das ZF1 noch SVN als V24e (Abkürzung für Versionsmanagementsoftware) verwendet, so hat das ZF2 von Beginn auf Git gesetzt. Wer sich mit Git noch nicht beschäftigt hat, findet im Wiki eine kurze Einführung für Entwickler [9]. GitHub wiederum ist ein webbasierter Hosting-Dienst für Softwareentwicklungsprojekte, die Git einsetzen. Ein interaktives Tutorial hilft beim Einstieg in Git und GitHub [10].

Auf GitHub finden sich die Repositories für das Zend Framework 2 [11]. Dort kann man nicht nur die Library herunterladen, sondern auch auf die Quellen der offiziellen Website zugreifen. Außerdem befinden sich hier die Skeleton Application, zu der wir gleichkommen, sowie die Dokumentation und die Repositories der Web Services, die nicht mehr zum Kern des ZF2 gehören. Ebenfalls einen Blick sind die Repositories der ZF-Commons-Initiative [12] wert, deren Ziel die Schaffung von hochwertigen ZF2-Modulen ist.

Installation der Skeleton Application

Zuerst ist es für manche ein Schock: Zend_Tool gibt es nicht mehr, zumindest noch nicht. Es gibt ein neues Zend\Tool-Repository, doch das steckt noch in den Kinderschuhen. Für das Anlegen eines neuen Projektes kann stattdessen die Skeleton Application verwendet werden. Darin ist das Gerüst einer Zend-Framework-2-Applikation enthalten, auf dem aufgebaut werden kann.

Zuerst legen wir ein Verzeichnis für unser neues Projekt an. Unter Linux könnte das Verzeichnis /home/devhost/zf2phpmagazin/ lauten. Windows-Nutzer können stattdessen D:\devhost\zf2phpmagazin\ verwenden. Im Folgenden wird nur noch auf /home/devhost/zf2phpmagazin/ verwiesen.

Wir rufen das Repository für die Skeleton Application [13] auf. Oben links ist ein Link für den Download als ZIP-Paket enthalten. Nach dem Download entpacken und alle darin enthaltenen Dateien und Unterverzeichnisse nach /home/devhost/zf2phpmagazin kopieren. Das /public-Verzeichnis sollte in /home/devhost/zf2phpmagazin/public liegen.

Wir wechseln in der Konsole in das Verzeichnis des Projektes, um die Installation mithilfe von Composer zu beginnen. Vorher wird der Composer aufgerufen, um sich zu aktualisieren, danach wird die Installation gestartet. Dabei wird die Zend Framework Library heruntergeladen und installiert, da diese nicht Teil der Skeleton Application ist. Das Ergebnis sollte aussehen wie in Listing 1.1.

Um die Installation abzuschließen, muss der Webserver konfiguriert werden (um den Rahmen des Kapitels nicht zu sprengen, erläutere ich dies nur für den Apache2 unter Linux). Falls das mod_rewrite-Modul noch nicht aktiviert ist, kann dies über die Konsole nachgeholt werden.

> sudo a2enmod rewrite

Danach erstellen wir die Datei für den Virtual Host und kopieren den Inhalt aus Listing 1.1 hinein. Als Nächstes wird der neue Host aktiviert und der Apache neu gestartet:

> sudo touch /etc/apache2/sites-available/zf2phpmagazin
> sudo gedit /etc/apache2/sites-available/zf2phpmagazin
> sudo a2ensite zf2phpmagazin
> sudo service apache2 restart

Als Letztes müssen wir unserer hosts-Datei den neuen Host mitteilen. Dafür tragen wir mit sudo gedit /etc/hosts für die IP 127.0.0.1 den neuen Host zf2phpmagazin ein.

Nun können wir im Browser das neue Projekt unter http://zf2phpmagazin/ aufrufen, das Ergebnis sollte wie in Abbildung 1.1 aussehen. Damit ist die Installation der Skeleton Application abgeschlossen. Es empfiehlt sich, dieses Projekt im IDE seiner Wahl (ZendStudio, PHPStorm, NetBeans etc.) anzulegen, um leichter auf die Dateien zugreifen zu können.

eggert_zf2_1.png

Abbildung 1.1: Erster Aufruf der Skeleton Application

Applikationsstruktur

Der Aufbau eines ZF2-Projekts unterscheidet sich von dem seines Vorgängers. Es gibt folgende fünf Unterverzeichnisse:

  1. /config/
  2. /data/
  3. /module/
  4. /public/
  5. /vendor/

Im /config/-Verzeichnis werden alle applikationsweiten Konfigurationsdateien abgelegt. Im Zentrum steht dabei die Dateien /config/application.config.php, die Auskunft über die zu verwendenden Module enthält. Die Option config_glob_paths gibt an, welche Konfigurationsdateien in welcher Reihenfolge geladen werden sollen. Dabei sagt die Angabe config/autoload/{,*.}{global,local}.php aus, dass alle Dateien aus dem Verzeichnis /config/autoload/ geladen werden sollen, die auf „global“ oder „local“ enden, wobei die Einstellungen aus den local-Dateien jene aus den global-Dateien überschreiben können. Damit lassen sich kaskadierende Konfigurationen für Stufen wie Development, Testing und Live umsetzen, wobei in diesem Fall local für Development und global für Live steht.

Das /data/-Verzeichnis ist bereits aus dem ZF1 bekannt. Hier können nicht dauerhaft zu speichernde Daten wie Sessions, Caches, Mails oder Logs abgelegt werden.

Lag der Kern einer Anwendung im ZF1 im Verzeichnis /application/, hat diese Rolle in Version 2 das Verzeichnis /module/ übernommen. Darin befindet sich ein Modul Application, das für den reibungslosen Ablauf unserer Anwendung zuständig ist und das wir nach Bedarf anpassen können. Der Aufbau eines Moduls wird im nächsten Abschnitt erläutert.

Das /public/-Verzeichnis ist ebenfalls vom ZF1 bekannt. Hier liegen weiterhin die Grafiken, CSS- und JS-Dateien sowie unsere index.php und die .htaccess für den Apache.

Als Letzter im Bunde ersetzt /vendor/ das bekannte /library/-Verzeichnis, das im ZF1 verwendet wurde. Hier liegen unter /vendor/zendframework/ die ZF2-Dateien, die neben der Library auch die Tests, Demos, weitere Ressourcen sowie Skripte enthalten. Zudem befinden sich in /vendor/composer/ weitere Dateien, die der Composer für die Installation von Abhängigkeiten benötigt. In dem /vendor/-Verzeichnis können auch alle Module liegen, die nicht direkt für unsere Anwendung erstellt werden. Das können fertige Module oder auch die eigenen Library-Erweiterungen sein, wie wir sie aus dem ...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang