Zend Framework in Action
Feb. 4, 2009
Buch Daten
| Autor(en): | |
|---|---|
| Verlag: | Manning Publications |
| Datum der Veröffentlichung: | Okt. 28, 2008 |
| ISBN: | 1933988320 |
| Link zur Seite amazon.de: | Zend Framework in Action |
| Meine Bewertung: | 8/10 Punkte |
Bewertung
Nach einigen Pleiten ist Ende letzten Jahres doch noch ein vernünftiges Buch über das Zend Framework veröffentlicht worden. Die Konkurrenten haben meiner Meinung nach Schnellschüsse abgeliefert, die nur veröffentlicht wurden, damit sie die ersten Bücher über das ZF geschrieben haben. Wer mir nicht glaubt, kann gerne einen Blick auf die entsprechenden Amazon-Bewertungen werfen. Ich ärgere mich immer noch, dafür Geld ausgegeben zu haben.
Das Zend Framework
Aber genug davon, eigentlich wollte ich ja ein paar Worte über das neue Buch und vorher über das Zend Framework selbst verlieren.
Das Zend Framework, kurz ZF, stellt PHP-Programmierern eine ganze Reihe von zusätzlichen Funktionen zur Verfügung, die das Erstellen von Webanwendungen deutlich vereinfachen sollen. Gerade die Dinge, die man für jede Webseite wieder und wieder selbst programmiert, findet man hier schon fertig und gut verpackt. Von der grundsätzlichen Struktur (MVC), über den Datenbankzugriff, bis hin zu Themen wie Authentifizierung, Formularvalidierung oder das Einbinden externe Dienste (z.B. Google Maps) in die eigene Seite finden man im ZF sehr viel Funktionalität, wo man sich später nur noch ärgert, warum man das früher selbst gemacht hat.
An dieser Stelle ein kleiner Einwurf an alle Kursteilnehmer von mir, die das hier lesen: Nein, Ihr dürft das ZF nicht in der Projektphase verwenden! Ja ich weiß, dass es so schneller gehen würde, aber Ihr sollt erst mal lernen, wie PHP selbst funktioniert, bevor Ihr euch von Frameworks die Arbeit abnehmen lasst! So, nun zurück zum Text.
Eine Stärke dieses Frameworks ist, dass man auch nur Teile daraus verwenden kann. Es wird also niemand gezwungen, alle Komponenten zu verwenden. So könnt Ihr zum Beispiel nur die (sehr gelungene) MVC-Struktur und die Templates nutzen, den Rest aber wie gewohnt von Hand programmieren. Das macht das ZF relativ einsteigerfreundlich, wie ich finde, gerade wenn man aus der Richtung Ich programmier alles von Hand kommt.
Über das Buch
Nun aber zum Buch! Da ich das Vergnügen hatte, die Entstehung des Buches verfolgen zu können (Manning bietet die Möglichkeit, schon frühe Fassungen der Bücher als PDF zu kaufen und das fertige Buch bei Erscheinen zu erhalten - tolle Sache!), möchte ich den Autoren gleich mal ein ganz dickes Lob aussprechen. Während der Entstehung des Buches hat sich auch das ZF weiterentwickelt und die Autoren waren nicht zu faul, auch Teile ihres Buches wieder umzuschreiben, dass Sie zu den neuen Technologien passen.
Beispiele hierfür sind Zend_Form, eine Komponente, die für Formaularerstellung und -validierung zuständig ist, und Zend_Layout, die es ermöglicht, wiederkehrende Elemente einer HTML-Seite (Kopf, Menu, Footer ...) in ein Dokument, das Layout eben, auszulagern. Beide Komponenten sind später in das Buch eingefügt worden und passen sehr gut zum restlichen Text.
Das Buch selbst besteht aus 16 Kapiteln plus Anhang:
1. Introducing Zend Framework
Das Einleitungskapitel ist eine kleine Einführung ist die Prinzipien, nach denen das ZF entwickelt wurde. Hauptsächlich besteht dieses Kapitel aber aus ein wenig Blabla, warum man sich für genau dieses Framework entscheiden sollte. Ein absoluter Neuling wird aus diesen Abschnitten trotzdem ein paar nützliche Informationen ziehen. Um fair zu sein, da es schon beinahe hunderte von PHP-Frameworks gibt, ist es vielleicht sogar notwendig, diese Rechtfertigung niederzuschreiben.
2. Hello Zend Framework!
Hier geht es schon ans Eingemachte. Das Kapitel gibt einen groben Überblick, aus welchen Kompnenten das ZF besteht und wie die Verzeichnisstruktur aussieht, sprich was wo abgelegt werden muss. Meiner Meinung nach gehen die Autoren hier leider ein paar Schritte zu weit. Sie zeigen zwar eigentlich nur eine kleine Hallo Welt-Applikation, gehen aber trotzdem schon sehr in die Details, was einen wirklichen Anfänger wahrscheinlich überfordert. Themen wie view helper oder datenbankbasierte Modelle sind doch ein wenig heftiger Stoff so früh im Buch.
Macht euch keine sorgen, wenn euch nach diesem Kapitel der Kopf schwirrt, es wird später alles nochmal ausführlicher erklärt.
3. Building a website with Zend Framework
Dieses Kapitel besteht aus zwei Teilen. Zuerst wird die Beispielwebseite vorgestellt, die in dem Buch Stück für Stück entwickelt wird. Wir erfahren die Ziele, die mit der Webseite verfolgt werden, lernen die Navigationsarchitektur kennen und sehen das geplante Layout.
Danach wird die Grundstruktur des Codes gezeigt, also die Verzeichnisse erstellt, die Bootstrapklasse (die Klasse, die das Framework initialisiert) geschrieben, eine Konfigurationsdatei erstellt und schon die ersten Datenmodelle erstellt.
Sehr gut an diesem Buch gefällt mir, dass bereits hier das Konzept von automatischen Tests eingeführt wird. Zu der eigentlichen Programmierung werden Tests geschrieben, die prüfen, ob der Code auch wirklich funktioniert. Später kann man mit einem einfachen Befehl alle Tests laufen lassen und sieht, ob man versehentlich was verbockt hat. Auf diese Weise findet man Fehler, die man ansonsten stundenlang suchen müsste. Glaubt mir, Tests für seinen Code zu schreiben, ist langfristig eine sehr gute Idee! Je früher ihr euch so etwas angewöhnt, desto besser.
4. Managing the view
In diesem Kapitel wird Zend_Layout vorgestellt, also, wie man die wiederkehrenden Teile des Layouts nicht in jedes Template kopieren muss. Durch die Trennung in ein View-Template, also ein Template für die konkrete Seite und ein Layout, also ein Template für alle Seiten, kann man die Dinge wiederverwerten, die in jeder Seite gleich sind. Sehr praktisch und nebenbei auch prima erklärt.
Außerdem stellt das Kapitel auch die wichtigsten view helper vor, also kleine Helfer, die das Schreiben von Templates vereinfachen.
5. Ajax
Ja ich weiß, alle sind heiß auf Ajax! Trotzdem finde ich, dass dieses Kapitel so ziemlich das einzige überflüssige in dem Buch ist. Das liegt daran, dass ZF inzwischen zwei Javascript Frameworks (zur Wahl) einbindet, nämlich JQuery und Dojo. Dieses Kapitel setzt aber noch YUI ein, was nur noch wenige tun werden, die mit ZF arbeiten. Versteht mich nicht falsch, YUI ist Klasse, aber die beiden anderen bieten genauso viel und sind deutlich besser in das ZF eingebunden.
Trotzdem ist das Kapitel eine gute Einführung, was Ajax überhaupt ist und wie man in PHP damit arbeitet. Leider bestätigt das Kapitel die alte Regel, dass ein Buch veraltet ist, sobald es gedruckt wird.
6. Managing the database
Das Kapitel ist eine solide Einführung, wie man im ZF mit Datenbanken kommuniziert. Mir persönlich ist der Datenbankzugriff in ZF zwar ein wenig zu primitiv, aber das hängt ja von den Projektanforderungen und den eigenen Vorlieben ab. Die Autoren leisten hier hervorragende Arbeit und zeigen, wie man im ZF eine Datenbankverbindung aufbaut, Modelle anlegt und wie man Relationen zwischen Modellen aufbaut. Ja Ihr habt richtig gelesen, 1:n und n:m-Beziehungen ohne eine Zeile SQL!
7. User authentication and access control
Hier erfährt man, wie im ZF die Authentifizierung auf Autorisierung gehandhabt wird. Zuerst zeigen die Autoren, wie man eine einfache HTTP-Authentifizierung durchführt, danach erstellen Sie einen Login, der mit Benutzerinformationen aus der Datenbank arbeitet.
Im zweiten Teil erklären Sie, was Zugriffsberechtigungen sind und wie diese im ZF umgesetzt werden. Wir erfahren auch, wie man einem Benutzer Rollen zuweist, die Ihm bestimmte Rechte in unserer Seite verschaffen.
8. Forms
Eines meiner Lieblingskapitel! Dieses Kapitel behandelt Zend_Form und damit alles, was mit Formularen zu tun hat. Von der Anzeige des Formulars, über die Validierung von Benutzereingaben, bis hin zu der Ausgabe angepasster Fehlermeldungen erfahrt Ihr hier alles, was man über Zend_Form wissen muss.
Leider hat auch hier schon der Zahn der Zeit zugeschlagen. Inzwischen kann man in Zend_Form auch Javascript-Widgets von Dojo und JQuery einsetzen, also zum Beispiel kleine Kalender, aus denen der Benutzer ein Datum auswählen kann oder ein grafischer, Word-ähnlicher Editor, in dem man komfortabel online Texte schreiben kann. Auch hier war das Buch einen Tick zu früh dran, aber irgendwann mussten Sie es schließlich veröffentlichen.
9. Searching
Das Kapitel ist harter Stoff! Das ZF enthält eine Nachprogrammierung von Lucene, einer extrem mächtigen Volltext-Suchmaschine, die eigentlich aus der Java-Welt kommt. Die Autoren erklären Stück für Stück, wie eine Suchmaschine überhaupt arbeitet, wie man die Informationen aus der Datenbank Lucene zugängig macht und wie man schließlich ein Suchformular erstellt und die Ergebnisse auf der Webseite anzeigt. Wie gesagt, ein hartes Kapitel, aber es lohnt sich!
10. Email
Dieses Kapitel enthält, wie der Titel vermuten lässt, was das ZF zum Thema Email zu bieten hat - und das ist eine ganze Menge. Vom Versenden einer Email, über das Versenden an mehrere Empfänger bis hin zu Emails mit Anhängen und HTML-Mails wird alles erklärt, was Ihr in diesem Zusammenhang brauchen werdet. Sogar das Abrufen von Emails über POP3 wird erklärt. Ja, richtig gelesen! Das ZF kann Emails abrufen und den Inhalt auf der Webseite anzeigen.
11. Deployment
Ein, meiner Meinung nach, etwas chaotisches Kapitel. Die Autoren versuchen, zu viele Themen auf einmal zu erklären. Der erste Teil, in dem erklärt wird, wie man unterschiedliche Konfigurationen für den lokalen Entwicklungsserver und den produktiven Server verwenden kann, ist ja noch gelungen. Aber danach im selben Kapitel noch Subversion inklusive der Theorie der Versionierung von Dokumenten und zum Schluss auch noch Selenium und funktionale Tests zu erklären, ist deutlich zu viel.
Keines der Themen wird so tief behandelt, wie sie es verdient hätten und trotzdem wird der Leser mit viel Stoff überfordert. Drei einzelne Kapitel hätten hier gut getan.
12. Talking with other applications
Eigentlich hätte man, wieder nur meiner Meinung nach, dieses Kapitel mit dem nächsten vertauschen sollen. Hier erklären die Autoren, wie man Informationen der eigenen Webseite so aufbereitet, dass andere Webseiten diese verwenden können. Das Konzept nennt sich Webservices.
Zuerst zeigen sie, wie man aus eigenen Daten einen RSS-Feed erzeugt, danach sind die härteren Themen XML-RPC und REST dran. Die Feeds sehe ich ja noch ein, schließlich biete ich hier selbst welche an, aber die anderen Themen sind schon sehr fortschrittlicher Stoff, den Ihr wohl die nächste Zeit noch nicht brauchen werdet.
Also lautet die Devise für dieses Kapitel: Überfliegen und zurückkommen, wenn Ihr sowas mal programmieren müsst.
13. Mashups with public web services
Mashups sind momentan der große Trend im Web! Informationen aus anderen Webseiten in die eigene einzubauen, ist nicht nur praktisch, sondern ermöglicht es auch Features anzubieten, an denen man selbst Jahre programmiert hätte.
Ob man statt einer umständlichen Wegbeschreibung einfach Google Maps einbindet, durch Amazon einige Produkte auf der eigenen Homepage anbietet, die eigene Bildergalerie aus Flickr anzeigt oder die coolsten Youtube-Videos auf der eigenen Startseite einbindet - all das ist heutzutage dank Mashups kein Problem und das ZF bietet für viele dieser Dienste bereits eine fertige Anbindung.
Nachdem die Autoren die angebotenen APIs vorgestellt haben, setzten Sie drei Beispiele um. Zuerst werden einige Produkte von Amazon als Werbung auf der eigenen Seite platziert, dann Bilder aus einer Flickr-Galerie angezeigt. Zum Schluss zeigen die Autoren noch, wie man Videos von Youtube auf der eigenen Seite anzeigt.
Alles in allem ein gelungenes Kapitel!
14. Caching: making it faster
Caching ist ein extrem wichtiges Thema, sobald die eigene Seite erfolgreich wird. Viele Operationen, die nötig sind, um eine Webseite anzuzeigen sind extrem rechenintensiv. Zuerst wird das ganze Framework selbst geladen, die Konfiguraion eingelesen, die Berechtigungen werden geprüft und Informationen werden aus der Datenbank gelesen und für die Anzeige aufbereitet. Diese Daten werden dann in das zuständige Template eingebaut und diese mit dem Layout verbunden. Erst dann wird die Seite ausgeliefert.
Viele dieser Schritte wiederholen sich in jeder Anfrage an den Server und können für einen festgelegten Zeitraum zwischengespeichert werden. Anstatt jedes Mal die Datenbank zu befragen und die Informationen ins Template einzubauen, kann man festlegen, dass diese Informationen für zum Beispiel 10 Minuten gültig sind. Also wird das Template einmal erzeugt und dann abgelegt. Wird die selbe Seite innerhalb der 10 Minuten erneut angefragt, überspringt das ZF die ganzen Schritte und liefert die fertige, gespeicherte Seite aus.
Das Kapitel erklärt zuerst, was Caching überhaupt ist und welche Vorteile es bietet. Danach zeigen die Autoren die verschiedenen Methoden, wie Caching im ZF eingesetzt werden kann.
15. Internationalization and localization
Die persönliche Hölle jedes Webentwicklers - mehrsprachige Webseiten! Das ZF versucht, unsere Qualen ein wenig zu lindern, indem es uns Tools zur Seite stellt, mit denen wir die Übersetzungen verwalten, die unterschiedlichen Datums- und Währungsformatierungen automatisch passend zur vom Benutzer ausgewählten Sprache anzeigen oder die Sprachinformationen in die URL einbauen können (z.B. /de/contact und /en/contact).
Trotzdem, auch die Funktionen des ZF und dieses tolle Kapitel ändern nicht an der Tatsache: Mehrsprachigkeit ist ätzend!!! Ich muss es wissen, dieser Blog ist schließlich zweisprachig.
16. Creating PDFs
Zu guter Letzt noch ein Kapitel, wie man im ZF PDFs erzeugen kann. Wenn man es für die eigene Webseite braucht, ist es natürlich praktisch. Ich persönlich habe mich ehrlich gesagt mit dem Thema noch nicht beschäftigt und auch das Kapitel nur überflogen. Von daher - sagt mir, ob es gut ist!
Zusammenfassung
Ich muss ehrlich sagen, trotz einiger Schwächen - meistens wenn die Autoren versuchen, zu viele Informationen auf zu wenig Raum unterzubringen - ist Zend Framework in Action das momentan beste Buch zu diesem Thema und ich kann es allen nur wärmstens empfehlen, die auch nur halbwegs des Englischen mächtig sind. Alternativ wartet Ihr bis Mai, da soll die deutsche Übersetzung kommen: Zend Framework im Einsatz
Mal sehen, was der März so bringt, da hat Addison-Wesley ein weiteres, deutsches Buch zu dem Thema angekündigt. Wenn Ralf Eggert in dem Buch nur halb so gut schreibt, wie auf seiner Webseite, dann könnte das ein weiterer Hit werden. Wie gesagt, mal sehen ...