"You don't write for the money, because if you do, you're a monkey.
You don't write for the fame, because if you do, you're a monkey.
You don't even write because you like to write, because if you do, you're still a monkey.
You write because to NOT write is suicide."
Über dieses Buch
Die Geschichte dieses Buches beginnt im Jahr 2001. Die Arbeit an der Zend Engine 2, dem kompilierenden und ausführenden Kern von PHP 5, wurde gerade aufgenommen. Ich beginne damit, die Fähigkeiten des neuen Objektmodells auszuloten. Hierbei mache ich mir vor allem Gedanken darüber, wie diese neuen Sprachmerkmale die Entwicklung von komplexen Anwendungen erleichtern können.
Schnell beginnen sich Fragen zur Umsetzung von Entwurfsmustern, die im Umfeld etablierter objektorientierter Systeme wie C++ oder Java entstanden sind, mit dem neuen Objektmodell von PHP 5 auf den PHP-Mailinglisten und in den PHP-Gruppen des Usenet zu wiederholen. Um diese und andere Fragen an zentraler Stelle zu beantworten, richte ich ein Projekt ("phpoopbook") beim Open-Source-Hoster SourceForge.net ein. Ziel dieses Projektes sollte eine Ideen- und Codebeispiel-Sammlung über objektorientierte Programmierung mit PHP 5 sein. Im Laufe der folgenden Monate entsteht das Grundgerüst des Buches, das Sie, lieber Leser, heute in Händen halten.
Auf dem LinuxTag 2002 komme ich mit René Schönfeldt vom dpunkt.verlag zusammen. Gemeinsam fassen wir den Entschluss, aus den bis dahin bei SourceForge.net liegenden Buchfragmenten ein "richtiges" Buch zu machen. Ein Vertrag wird unterschrieben, die Arbeit nimmt ihren Lauf.
Da sich die Veröffentlichung von PHP 5 jedoch bis Sommer 2004 verzögert (ursprünglich war einmal das 2. Quartal 2002 geplant gewesen), dauert auch die Arbeit an diesem Buch länger als gedacht. In dieser Zeit wurden einige Umstrukturierungen am ursprünglichen Konzept nötig. Dieses hatte unter anderem einen Schwerpunkt bei der Programmierung objektorientierter PHP-Anwendungen für einen Application Server (Script Running Machine, SRM) vorgesehen.
Was dieses Buch sein möchte -- und was nicht
Dieses Buch beschreibt erfahrenen PHP-Entwicklern den Weg in die neue, objektorientierte PHP-5-Welt. Sie lernen, welche professionellen Konzepte und Methoden in der Softwareentwicklung mit PHP zur Verfügung stehen und wie sie eingesetzt werden. Dieses Buch kann und möchte jedoch keine Einführung in PHP oder Themen der Softwaretechnologie wie objektorientierte Analyse und Design sein.
Diagramme, die den Aufbau von Klassen oder die Interaktion zwischen Objekten veranschaulichen sollen, werden in der Notation der Unified Modeling Language (UML) dargestellt. Diese ist jedoch nicht Thema dieses Buches, auch wenn beispielsweise im Rahmen der Diskussion von Werkzeugen für die Modellierung von PHP-Applikationen auf Bestandteile der UML eingegangen wird. Das Gleiche gilt für die Themen Extreme Programming und Refactoring, die als Motivation für Unit Tests dienen.
Wer mehr über objektorientierte Analyse und Design sowie UML lernen möchte, dem seien die Bücher [HitzKappel2003] und [Oestereich2004] empfohlen. [Fowler1999] ist das Standardwerk zum Thema Refactoring.
Aufbau dieses Buches
Das Buch gliedert sich in fünf Hauptteile und einen Anhang.
Der erste Teil ("Objektorientierte Programmierung") stellt neben den Grundlagen der objektorientierten Programmierung und deren Umsetzung in PHP die testgetriebene Entwicklung von PHP-Anwendungen vor.
Der zweite Teil ("Entwurfsmuster in PHP anwenden") ist den Entwurfmustern (englisch: Design Patterns) gewidmet.
Der dritte Teil ("PHP-5-Programmierung") befasst sich mit der Verarbeitung von XML-Dokumenten, der Programmierung mit Webdiensten (SOAP) und der MySQLi-Erweiterung für die Arbeit mit MySQL 4.1 und MySQL 5.0.
Der vierte Teil ("Fortgeschrittene Datenbankprogrammierung") widmet sich der Datenbankabstraktion mit Creole und der Speicherung von PHP-Objekten in einer relationalen Datenbank mit Propel.
"Werkzeuge für die Entwicklung von PHP-Projekten" sind das Thema des fünften und letzten Teils.
Im Zentrum der Diskussion der behandelten Themen stehen die zahlreichen Codebeispiele. Diese sind so angelegt, dass sie die Idee des jeweils behandelten Konzeptes kommunizieren und als Ausgangspunkt für das eigene Ausprobieren dienen. Die Codebeispiele werden begleitet von nicht zu viel, aber auch nicht zu wenig Erklärung.
Der PHP-Code wird in diesem Buch in der Schrift Letter Gothic
dargestellt.
Programmaufrufe und Ausgaben von PHP-Programmen erscheinen ebenfalls
in dieser Schrift, werden jedoch in grauen Kästen hervorgehoben.
Das Buch behandelt PHP 5. Die gezeigten Codebeispiele sind daher nicht mit früheren PHP-Versionen nachvollziehbar.
Die Webseite zum Buch
Auf der Webseite zum Buch finden Sie die Codebeispiele zum Herunterladen sowie drei Monate nach der Veröffentlichung eine als HTML gerenderte Fassung dieses Buches.
Danksagungen
Für sein Geleitwort und das technische Lektorat danke ich Kristian Köhntopp.
Für sein technisches Lektorat des ersten Kapitels danke ich Pascal Costanza.
Für sein technisches Lektorat für das MySQLi-Kapitel danke ich Georg Richter, dem Entwickler der MySQLi-Erweiterung.
Für ihre Unterstützung bei der Arbeit an diesem Buch danke ich dem Team der dpunkt.verlag GmbH, besonders meinem Lektor René Schönfeldt.
Für ihre Arbeit an der Zend Engine 2, dem Kern von PHP 5, danke ich Andi Gutmans, Zeev Suraski sowie Marcus Börger. Ohne sie gäbe es weder PHP 5 noch dieses Buch.