Archive for the ‘PHP Design Patterns’ tag
Buchvorstellung: PHP Design Patterns
Vor einigen Wochen habe ich mir ein Buch zugelegt welches ich schon lange lesen wollte: PHP Design Patterns von Stephan Schmidt aus dem O’Reilly Verlag. Interessant ist vor allem die vor mir liegende 2. Auflage, die nochmal umfassend aktualisiert wurde und nun voll auf PHP 5.3 abgestimmt ist.
Auf den ersten Seiten wird auf die Objektorientierung von PHP und die neuen Features von PHP 5.3 eingegangen, unter anderem Namespaces, Lambda-Funktionen, Closures, Late Static Binding und Interzeptor-Methoden. Alle Beispiele im Buch beinhalten auch Namespace-Anweisungen. Wer sich dort sehr fit fühlt kann das Kapitel überspringen, aber eine solch gute Zusammenfassung sollte man eigentlich zu mindestens schnell überfliegen.
Die nächsten 2 Kapitel befassen sich mit der SPL und zeitgemäßem Software-Design: Die Iterator-Interfaces sind das ganze Buch über sehr wichtig, da immer gegen Interfaces implementiert wird, was ich so auch noch in keinem Buch gesehen habe, wirklich vorbildlich finde ich. Es werden auch Themen wie Fluent Interfaces, Dependency-Injection sowie UML angerissen, alles Dinge die man heutzutage kennen sollte.
Der Kern des Buches befasst sich natürlich mit den verschiedenen Entwurfsmustern: Erzeugungsmuster, Strukturmuster, Verhaltensmuster sowie Enterprise-Pattern. In letzterem werden Dinge wie MVC, die verschiedenen Datenbank-Pattern (Row-Data-Gateway, Active Record, Data Mapper usw), sowie Front-Controller, Event-Dispatcher, TemplateView, View-Helper und viele weitere behandelt.
Zu jedem Pattern gibt es eine kurze Zusammenfassung, die Motivation und den Zweck des Einsatzes (wo brauche ich das Pattern und welche Probleme löst es für mich), eine ausführliche Implementierung anhand eines Autovermietungs-Beispiels, eine Definition von Schritten zur Umsetzung in Form einer Liste sowie weitere Anwendungsbeispiele und Fallstricke. Auf durchschnittlich 10 Seiten pro Muster erhält man auch ein wunderbares Nachschlagewerk zu insgesamt 28 Design Pattern (wenn ich mich nicht verzählt habe).
Durch das Informatikstudium und dem täglichen Programmieren im Beruf waren mir zwar 90% der Pattern bereits bekannt, aber es ist schön zu sehen dass man recht viele davon bereits aktiv anwendet. Viele der Pattern werden auch durch mein aktuell favorisiertes Framework aus dem Hause Zend vorgelebt. Im Buch werden verschiedene Frameworks vorgestellt, es ist interessant zu sehen wie diese die Pattern umsetzen. Vor 2 Jahren hätten mir Dinge wie Front-Controller oder Intercepting-Filter nichts gesagt, denn in der Uni lernt man nur die etwas älteren Pattern der “Gang of Four” (GoF).
Es werden auch bei vielen Pattern aktuell verfügbare Lösungen erwähnt, beispielsweise Frameworks die ein bestimmtes Pattern umsetzen (Symfony, Zend Framework, Propel, Stubbles), aber leider auch einige veraltete PHP4 PEAR-Pakete oder die PHP4-Template-Engine patTemplate. Ich habe gerade nicht für jedes erwähnte PEAR-Paket eine zeitgemäße Alternative parat, aber das war etwas enttäuschend, auch als dann extra für diesen veralteten Code das Error-Reporting geändert werden musste damit keine Notices und Deprecated-Warnungen auftreten. Verbesserungswürdig, ebenso wie mir einige wenige Rechtschreibfehler aufgefallen sind.
Was ich vermisst habe ist zumindest die Erwähnung von einigen wichtigen Anti-Pattern, das hätte gut zum Thema gepasst und zu weiteren Recherchen anregen können. Außerdem fand ich es schade dass schon wieder eine Autovermietung als Beispiel gewählt wurde. Es kann doch nicht so schwer sein, sich mal ein anderes Beispiel auszudenken, es muss doch nicht immer eine Autovermietung oder ein Blogsystem sein.
Diese Missstände sollen aber nicht die sonstige Qualität und Wichtigkeit dieses Buches schmälern. Auf jeden Fall eine klare Empfehlung für jeden PHP-Programmierer, der an etwas größeren Projekten (mit)arbeitet, für PHP-Anfänger ist es sicher eine Nummer zu hoch. Ideal ist es natürlich wenn man bereits objektorientiert programmiert und in der Praxis schon auf diverse Probleme gestoßen ist, die sich nun mit Hilfe dieser generellen Vorgehensweisen besser lösen lassen, und man das Erlernte direkt anwenden kann. Definitiv eines der besten 5 Bücher, die sich mit PHP für Fortgeschrittene beschäftigen.


