PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Buchvorstellung: PHP Design Patterns

with 10 comments

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.

Written by Michael Kliewe

März 5th, 2010 at 8:28 am

10 Responses to 'Buchvorstellung: PHP Design Patterns'

Subscribe to comments with RSS or TrackBack to 'Buchvorstellung: PHP Design Patterns'.

  1. Super Artikel! Ich bin es gerade auch am lesen (stehe auf Seite 397 🙂 )

    Ich habe mein Studium 2003 abgeschlossen und dort den Wert von Patterns noch nicht wirklich erkannt. Auch bei uns im Geschäft arbeitet niemand wirklich mit Patterns (sie werden höchstens mit einem Framework angewendet).

    Ist die Anwendung bei Euch im Geschäft völlig normal? Kennen die Entwickler die Patterns wirklich? Bei uns haben die Leute das Zeugs mal theoretisch gelernt, aber ich glaube nicht, dass sie jemand wirklich regelmässig verwendet bzw. verwenden könnte.

    Ralph Meier

    5 Mrz 10 at 08:40

  2. Hi,

    habe das Buch bereits seit über einem Jahr durch und ziehe es immer noch hin und wieder als schnelle Nachschlaglektüre heran – einfach mal zur Abwechslung von den vielen digitalen Texten. Das Buch ist sehr zu empfehlen, ich habe dadurch einiges hinzugelernt in Sachen MVC-Framework und Kapselung. Es erklärt sehr anschaulich, wie die momentan großen php-Frameworks Zend, symfony, flow3, yii, etc. arbeiten und wo der Sinn hinter all den abstrakten Klassen, Interfaces und der krassen Aufteilung in verschiedene Schichten steckt. Design patterns sind was tolles – aber man sollte sie auch bedacht einsetzen 😉

    Julian

    5 Mrz 10 at 10:08

  3. Also 90% der Patterns kennen ist ja das eine, aber im täglichen Progging Wahnsinn diese tatsächlich auch umzusetzen halte ich für unmöglich.
    Kennen: ja, Nutzen: selten.
    Sind wir mal ehrlich, an vielen Stellen machen Patterns keinen Sinn (außer man entwickelt wirklich ein Framework oder eine ähnlich abstrakte Software mit Erweiterungsmöglichkeiten). Sie sind oft eine nette gedankliche Spielerei für Entwickler, tragen aber auch nicht immer zur Effektivität bei 😉

    Kevin

    5 Mrz 10 at 12:14

  4. @Ralph und @Kevin: Das stimmt natürlich, zwischen Kennen und Anwenden besteht eine große Lücke. Bei uns werden sie auch häufig nur „gebraucht“ wenn man Funktionen des Zend Frameworks benutzt, dann sollte man evtl wissen wie der Frontcontroller mit seinen Plugins arbeitet oder was View-Helper sind, wie Zend_Db_Table mit der Datenbank arbeitet usw.

    Selbst Code schreiben der auf Pattern aufbaut kommt eher selten vor, das stimmt wohl. Und dann sind es auch nur geschätzte 5-10 von den 28, die man überhaupt mal selbst in Code giesst, der Rest ist ja bereits fertig verfügbar durch die MVC-Frameworks heutzutage.

    Michael Kliewe

    5 Mrz 10 at 12:22

  5. Oh, nächster Diskussionspunkt – Frameworks 🙂

    Ich hatte lange Zeit Probleme mit der Akzeptanz und dem Einsatz von Frameworks im Geschäft (wir setzten auch relativ wenige Frameworks an, sondern haben Software, die historisch gewachsen ist).

    Habe auch mal einen Artikel darüber geschrieben, ob Frameworks in Projekten überhaupt förderlich ist, weil man sich ja quasi abhängig macht und nicht mehr so gut wechseln kann -> http://daraff.ch/2010/01/misserfolg-in-projekten-durch-frameworks/

    Was meint ihr dazu?

    Ralph Meier

    5 Mrz 10 at 13:44

  6. Pattern selber zu programmieren macht man sicherlich nicht so häufig wie sie anzuwenden, aber auch das nutzen fällt einem mit der Kompetenz der Patterns einfacher. Im ZF kommt man ja beim täglichen programmieren nicht an der Registry und dem Singleton vorbei. 😀

    Zum Thema Frameworks wird meine Meinung täglich 😉 radikaler: Wer kein Framework einsetzt, entwickelt nicht professionel. Ausnahme: Code ist historisch gewachsen. Und solange man nicht bei bei einem der größten Seiten im Internet ist, sollte man auch nicht sein eigenes Framework schreiben. Ausnahme: Man möchte nur lernen.

    Ulf

    5 Mrz 10 at 16:05

  7. Ich kann nur zustimmen: die im Buch verwendeten Beispiele sind mir auch etwas fern. Und ich programmiere so selten für Autovermietungen…
    ansonsten sicherlich eine solides Nachschlagewerk für PHP’ler.

    „…, denn in der Uni lernt man nur die etwas älteren Pattern der “Gang of Four” (GoF).“ Theorie und Praxis. 🙂

    Framework: ist das was PHP anbieten sollte aber nicht tut!

    Jens-Andé Koch

    6 Mrz 10 at 02:09

  8. hi, bin php anfänger und wollte mal nach guten nachschlagwerken im i-net nach mvc für php fragen, danke 🙂

    Woy

    7 Mrz 10 at 16:55

  9. […] für dieses Buch schreiben soll, weil PHP Gangsta schon eine sehr schöne und vollständige Rezension geschrieben hat. Ich denke PHP Gangsta hat über den Inhalt und den Aufbau des Buches alles gesagt, […]

  10. […] höchst amüsant ihm zuzuhören.Der zweite Tag begann bei mir mit der Session über die wichtigsten Entwurfsmuster von Stefan Priebsch. Alle Beispiele hat Stefan, ähnlich wie Arne am Vortag, mit möglichst viel […]

Leave a Reply

You can add images to your comment by clicking here.