Wie kauft man ein Buch? Nach gut Glück? Nach dem Klappentext? Nach dem Gewicht? Nach dem Anspruch an den Leser? Nach einer Empfehlung?
Alles könnte auch zu diesem Buch führen. Ist es dann ein Buch statt vieler? Betrachtet man den äußeren Umfang, scheint auch das zuzutreffen. Mit 1150 Seiten und seinen über
2 kg Gewicht steckt es locker mehrere Leichtgewichte ein. Aber wer nicht gerade etwas sucht um seinen Computer zu zerschlagen, sollte eher auf den inneren Umfang
achten.
Wie nicht anderes zu erwarten von einem Buch, das den Untertitel trägt "Grundlagen und Profiwissen", soll der Inhalt einfach alles abdecken. Damit richtet sich das Buch
zunächst an den Anfänger, den es zum Programmieren mit PHP 4 anleiten will. Es wird noch nicht zuviel verraten, wenn schon jetzt gesagt wird, dass auch der fortgeschrittene
Programmierer ein strukturiertes Nachschlagewerk vor sich hat. Es ist möglich das Buch von Kapitel 1 bis zum Ende fortlaufend durchzuarbeiten. Der Anfänger lernt die
Programmiersprache von der Entstehungsgeschichte bis zur komplexen Anwendung. Wer schnell etwas nachschlagen will, wird durch Stichworte am Rand des Textes und durch
Hervorhebungen der gerade besprochenen Befehle im Quelltext schnell fündig.
Die Kapitel und deren Inhalt im Einzelnen. Am Anfang war das Wort. Und das Wort hieß "Einführung": So beginnen alle Bücher, die für den Anfänger geschrieben sind und auch
Kapitel 1 in diesem Buch. Oft fällt es schwer die Einführung zu lesen, wenn einen die Kreativität zum Programmieren drängt. Man sollte sich aber die Zeit
nehmen. Erfährt man hier schließlich nicht nur, was man mit PHP alles anfangen kann, wie es entstanden ist und warum man seine Ideen gerade nicht mit JavaScript,
VisualBasicScript oder ASP erledigen kann oder sollte. Eine wichtige Information steckt hier schon für die Tippfaulen: muss ich alle Quellcodes abtippen, wenn offensichtlich
keine CD-ROM mitgeliefert wird? Diese Frage kann bei umfangreichen Projekten durchaus zu einem Kaufkriterium werden! Auch wenn in Programmierkursen richtigerweise empfohlen
wird, man solle kleinere Quellcodes abtippen, denn so lerne man etwas über die Sprache; die Mühe kann man sich bei diesem Buch sparen, denn es gibt alle Quellcodes im
Internet auf der Seite
http://www.php.comzept.de. Dies hat den Vorteil, dass die Quellcodes im Internet um Fehler
bereinigt sind. Daneben findet sich dort ein Forum für Leser zum Gedankenaustausch.
Das
Kapitel 2 widmet sich der Vorbereitung zum Programmieren. Wohl kaum ein Rechner verfügt von Hause aus über den nötigen Webserver, den PHP-Interpreter
oder die Datenbankanwendung. Wer es installieren mag, findet hier wertvolle Hinweise. Wer aber nicht so geübt im Installieren ist, dem sei an dieser Stelle ein
"all-in-one"-Paket ohne Installationsfrust unter
http://miniserver.sourceforge.net empfohlen (Bitte beachten
Sie den Hinweis: diese Seite hat weder etwas mit dem hier besprochenen Buch, noch mit dem Rezensenten persönlich zu tun. Es ist lediglich als Ergänzung zum Lernen von PHP
gedacht).
Nun geht es los. Der heimische Webserver läuft, der richtige Editor ist gefunden.
Kapitel 3 ist aufgeschlagen. Das erste Script abgetippt: Erfolgserlebnis.
So macht der Einstieg Spaß. Ignoriert man die noch folgenden 1000 Seiten, könnte PHP so leicht sein. "Notationshinweise" machen den Anfang immer etwas madig, sind aber
absolut notwendig und vom Autor an der richtigen Stelle platziert. Was fehlt ist der deutliche Hinweis auf einen Programmierstil, den sich der Anfänger bereits an dieser
Stelle angewöhnen sollte. Es kann gar nicht genug betont werden, dass das A und O eines guten Scripts die Struktur und Lesbarkeit ist. Zwar ist dies bei den abgedruckten
Quelltexten vorbildlich umgesetzt. Die Erfahrung zeigt aber, dass Programmieranfänger wichtige Einrückebenen aus Bequemlichkeit ignorieren. Dem muss gleich zu Beginn
entgegengewirkt werden. Weiter würde es nicht schaden, wenn bei den Beispielen zum Unterschied zwischen "echo" und "print()" die Ausgaben des Browsers im Buch abgedruckt
werden würden. Für den Anfänger wäre dann der Vergleich zwischen seinem und dem Ergebnis im Buch leichter.
Mit dem Abschluss von Kapitel 3 steht der Anfänger bereits auf einem Wissensstand, bei dem die meisten kleineren Werke über PHP fast am Ende sind. Und dabei hat er an dieser
Stelle erst ein Viertel des Buches abgearbeitet. Er kennt sich nun mit Variablen, Funktionen, Objekten und nützlichen, speziellen Hilfsfunktionen aus. Für das Folgende ist
dies die Grundlage. Kurz und Schnörkellos, aber dafür sehr einprägsam beschrieben, bildet es das Grundgerüst der weiteren Programmierung. Wer dieses schon beherrscht, macht
einfach beim nächsten Kapitel weiter, ohne ständig das Gefühl zu haben, vielleicht doch etwas Wichtiges zu überlesen.
In
Kapitel 4 beginnt nun die Interaktivität. Wie setze ich PHP ein, um meine Webseiten dynamisch zu gestalten? Wie kann die Webseite auf den jeweiligen
Leser reagieren und individuelle Informationen anbieten? Genau diese Fragen sind es, auf die die meisten Programmieranfänger eine Antwort wissen möchten. Hier finden sie
angefangen mit der einfachen Formularauswertung über Cookies zum Speichern von Daten und der Sessionverwaltung wichtige Werkzeuge. Dazu Methoden zum Zugriff auf das
Dateisystem, die Verbindung zu anderen Internetservern, um beispielsweise auf einen FTP-Server zuzugreifen. Konsequenterweise werden im Anschluss Fragen der Sicherheit
aufgeworfen.
So wie schon vor vielen Jahren das "Hello World"-Programm zum Erlernen eines einfachen Programms in jedem Programmierbuch auftauchte, gibt es auch in nahezu jedem PHP-Buch
wiederkehrende Beispiele. Dies sind Programme, mit denen die eigene Webseite aufgepeppt werden kann. Dazu gehört der viel geliebte und zugleich gehasste Besucherzähler, der
"Counter". Seine Programmierung dürfte mit dem Wissen der vorangegangenen Kapitel kein Problem mehr sein. Ausführlich werden er und 4 weitere Standard-Scripte im
Kapitel 5 Schritt für Schritt erläutert. Hier erweisen sich die fertigen Quellcodes im Internet (Adresse siehe unter Kapitel 1) als eine echte
Erleichterung, erreichen doch die Projekte einen ordentlichen Umfang. Dennoch lohnt das Durcharbeiten des Buches. Denn bei näherer Betrachtung kann aus jedem der 5 Beispiele
etwas herausgezogen werden, was vielleicht bei einem eigenen Projekt gerade Kopfzerbrechen verursacht. Der Umgang mit Verzeichnissen, der Dateiupload, das Einfügen von
Bildern, der Abruf von E-Mail und das Sammeln und Speichern von interaktiven Informationen wie in einem Gästebuch ist so erklärt, dass es leicht in ein anderes Projekt
transportiert werden kann.
Ein Sammeln von Informationen auf einer ganz anderen Ebene ist Thema im
Kapitel 6. Hier geht es um die Grundlagen der Datenbanktechnik. Ohne Frage eines der
wichtigsten Themen: die Interaktion von PHP und Datenbankanwendungen wie MySQL. Wer PHP gerade lernt, ist oft erstaunt, wie leicht sich SQL-Abfragen in ein Script
integrieren lassen. Vorausgesetzt, man beherrscht SQL, die Abfragesprache der Datenbankanwendungen. Dies zu erlernen ist Ziel des 6. Kapitels. Es bietet fundierte
Grundlagen, um eine Datenbank zu erstellen, mit Informationen zu füllen und diese strukturiert wieder abzufragen. Auch hier werden im Anschluss Fragen der Sicherheit
aufgeworfen. Zum Ende des Kapitels erfährt der Leser die Möglichkeiten mit ODBC zu arbeiten. Im Prinzip ermöglicht ODBC eine von der jeweiligen Datenbankanwendung
unabhängige Programmierung. Das kann sinnvoll für die sein, die mit verschiedenen Datenbankanwendungen in der Entwicklung und der Veröffentlichung der Scripte arbeiten. Als
Schritt für Schritt-Anleitung ist dieser Teil gut zu verstehen, vertiefende Hinweise können aber nicht erwartet werden. So lässt sich für das gesamte Kapitel 6 sagen, dass
alles einleuchtend beschrieben wird, was man für PHP und Datenbanken braucht. Der Umfang ist für ein PHP-Programmierbuch mehr als ausreichend. Wer zu den wenigen gehört, die
mehr über spezielle Normalisierungstechniken und SQL-Abfragetechniken wissen müssen, kommt um Spezialliteratur ohnehin nicht herum.
Kapitel 7 bietet die Anwendung dessen, was in Kapitel 6 erlernt wurde. Es werden konkrete Scripte vorgestellt, die speziell auf die Datenbankanwendung MySQL
zugeschnitten sind. Die Kombination von PHP und MySQL kommt im Internet extrem häufig vor. Das liegt neben der Funktionsvielfalt beider Anwendungen nicht zuletzt auch daran,
dass beide Produkte kostenlos sind. So kommt jeder Programmierer früher oder später in die Situation, in der er Daten aus einer MySQL-Datenbank auslesen muss. Die Beispiele
decken weit mehr von dem ab, was man im täglichen Programmieralltag braucht. Hier kommt wieder der Profi zu Zug, der in diesem Kapitel eine schnelle Übersicht über die
Techniken der Datenbankmanipulation findet. Doch warum das Rad immer neu erfinden? Im Laufe des Kapitels wird der Umgang mit dem Datenbank-Tool phpMySQLAdmin erläutert, dass
sich nahezu ebenso weit verbreitet hat, wie MySQL selbst.
So wie schon Kapitel 5 widmet sich
Kapitel 8 beispielhaft größeren Projekten. Diesmal zum Thema Datenbanken. Es beginnt mit kleinen Dienstprogrammen. Dabei
wird im Prinzip ein Script zur Datenbankabfrage in kleine Bauteile zerlegt, die dann einzeln in eigenen Projekten eingebaut werden können. Was wie Bequemlichkeit aussehen
mag, ist eines der wichtigsten Prinzipien, die ein Programmierer lernen kann: den Quellcode so kurz und generell wie möglich entwickeln, damit er in jedem beliebigen Projekt
wieder verwendet werden kann. Man möchte gern für jeden Leser ein dickes Ausrufezeichen an diese "kleinen Dienstprogramme" schreiben und das Kapitel zur Pflichtlektüre
machen. Denn wer das gelernt hat, kann die folgenden besprochenen Projekte wie ein datenbankgestütztes Gästebuch, Authentifizierungstechniken und eine Umfrage unter den
Besuchern einer Webseite im Schlaf programmieren.
Jetzt wird es spezieller. Der Leser sollte an dieser Stelle mehr als die Grundlagen zu PHP bereits beherrschen. Aber betrachtet man den äußeren Umfang, hat er erst knapp
über die Hälfte des Buches bearbeitet. Es gibt offensichtlich noch viel Interessantes zu erfahren.
Kapitel 9 macht den Anfang zum Thema "Kommunikation und
Datenaustausch". Sicher: in den Grundlagen ist dazu schon einiges gesagt und in vielen Beispielen bereits vorgegeben worden. Hier gilt es die Feinheiten herauszuarbeiten,
wie der genauere Aufbau einer E-Mail. Es geht um den Hintergrund zum Versenden eine E-Mail. Das Programmieren für das POP3- und SMTP-Protokoll wird anhand eines
ausführlichen Beispiels erläutert. Ebenso das NNTP-Protokoll, besser bekannt unter seinem Dienst "news". Der überwiegende Teil des Kapitels richtet sich an diejenigen, die
neben PHP Grundlagen in XML erlernen und verarbeiten möchten. Darüber hinaus findet sich hier eine Einführung in XSLT, einer auf XML basierenden Transformationssprache. Mit
vielen Beispielen werden Einsatzgebiete von PHP in Verbindung mit XML gezeigt.
Eine weitere neue Sprache wird mit WML eingeführt. Die "Wireless Markup Language" dient dazu, Internetseiten zum Abruf mit Mobilfunkgeräten über das WAP-Protokoll fit zu
machen. In Kombination mit dem in vorherigen Kapiteln gelernten, kann so ein eigener E-Mail-Dienst für das "Handy" programmiert werden.
Doch damit nicht genug: auch WDDX (Web Distributed Data eXchange), eine Technik zum Austausch komplexer Daten zwischen Programmiersprachen wird erläutert. Im Anschluss
findet man Informationen zu XML-basierten Webservices. Eine Technik die zum heutigen Zeitpunkt aus den Kinderschuhen herausgewachsen ist, aber noch kaum Verbreitung bei den
Nutzern des Internet gefunden hat. Der Profi erfährt hier, wie er zum einen fremde Webservices in eigenen Projekten benutzen kann, zum anderen, wie er selbst eigene
Webservices einrichtet und anbietet. Am Beispiel der Suchmaschine "Google", die man in eigene Projekte integrieren kann, findet sicher nicht nur der Profi Interesse. Dank
der umfangreichen Erklärungen kann es auch der Anfänger verwenden, wenngleich auf den, der es auch verstehen will, mit knapp 30 Seiten Theorie eine harte Nuss wartet.
Das
Kapitel 10 beschreibt "Professionelle Techniken" der Programmierung. Hier wird der belohnt, der gleich von Beginn an gut strukturierte Scripte verfasst
hat. Professionelle Scripte lassen sich, wie bereits in Kapitel 8 gesehen, in kleine Bausteine zerteilen. Perfekt sind sie dann, wenn man einzelne Bausteine verändern und
verbessern kann, ohne dass vorhandene Projekte, in denen die Bausteine verarbeitet sind, neu überarbeitet werden müssen. Grob gesagt verfolgt dieses Ziel das PEAR-Projekt
(PHP Extension and Application Repository). Es stellt eine Sammlung von Programmen in PHP bereit, die eine einheitliche Programmierweise und Schnittstelle zur Verfügung
stellen. Sie zu nutzen bietet den Vorteil, aus eigenen Programmen auf bereits gut durchdachten Methoden zugreifen zu können, ohne sie selbst mühsam programmieren zu
müssen.
Eine zweite professionelle Technik sind die regulären Ausdrücke. Grundlagen hierzu wurden schon in Kapitel 3 erläutert. Hier geht es um Feinheiten. Kurz gesagt bieten
reguläre Ausdrücke eine effiziente Technik, um Eingaben eines Benutzers auf Gültigkeit hin zu überprüfen. Wird in einem Script beispielsweise die Eingabe eines Datums
gefordert, muss der Programmierer mit verschiedenen Schreibweisen oder gar Fehleingaben rechnen. Darauf zu reagieren kann unter Umständen mehr Programmieraufwand bedeuten,
als die Umsetzung des eigentlichen Scripts. Mit regulären Ausdrücken hingegen kann man sich eine Menge Arbeit ersparen. Der Preis ist eine nicht einfach zu verstehende
Technik der Zusammensetzung der regulären Ausdrücke, die hier detailliert beschrieben ist.
Für viele Webprogrammierer interessant ist die Technik der dynamischen Bilderzeugung, zu der PHP in der Lage ist. Als Beispiel: wer die Navigation in einer Webseite mit
Bildern als Menü-Knöpfe gestalten möchte, wird vielleicht daran denken, für jeden Knopf ein Bild mit einem beschreibenden Text darin zu entwerfen. Bei 50 Knöpfen bedeutet
das 50 Bilder eines Knopfes mit jeweils unterschiedlichen Texten im Bild. Das bedeutet wiederum einen Webspaceverbrauch für 50 Bilder. Und sollte sich ein Menü ändern, dann
muss mit dem Grafikprogramm nachgearbeitet werden. Nicht so bei PHP: dies ist in der Lage aus nur einem Bild (= 1/50 des Webspace wird verbraucht) diese Knöpfe dynamisch zu
erstellen. Mit wenigen Funktionen fügt PHP die Bildvorlage und einen beschreibenden Text zusammen und fertig ist der dynamisch erzeugte Knopf. Wie das programmiert wird und
was es darüber hinaus für Möglichkeiten der Bildmanipulation gibt, wird ausführlich beschrieben.
An den Schluss des Kapitels gedrängt werden Techniken zur Erstellung von PDF-Dokumenten durch PHP gezeigt. Ein mit Sicherheit interessantes Thema, denn PDF-Dokumente können
unabhängig vom Betriebssystem und der verwendeten Software seitengetreu dargestellt werden. Dabei ist das Erstellen von PDF-Dokumenten für die meisten PC-Benutzer Neuland.
Unter Windows-Umgebungen herrschen dazu meist nur kostenpflichtige Programme vor, auch wenn kostenlose Alternativen zur Verfügung stehen. PHP ist im Prinzip eine kostenlose
Alternative, allerdings ist der Programmieraufwand zum Erstellen eines PDF-Dokuments recht hoch. Gemessen am Aufwand und der enormen Möglichkeiten ist der Teil im Buch etwas
knapp. Zwar werden alle relevanten Funktionen dargestellt. Was fehlt sind mehr Erläuterungen und Beispiele. Trotzdem reicht die Darstellung für erste Ergebnisse und weitere
Experimente aus.
Ein weiteres Beispiel für das Programmierprinzip der "Bausteine" wird in
Kapitel 11 weiter verfolgt. In einem sehr umfangreichen Projekt wird die Trennung
von PHP-Code und Design (meist HTML) vollzogen. Es ist Pflichtlektüre für alle Webprogrammierer, die gut bedienbare dynamische Webseiten erstellen möchten. Hier fließen alle
gelernten Techniken zusammen. Das Ziel ist erreicht: der Anfänger ist zum Profi geworden, der Profi hat sein Wissen in einem umfangreichen und immer wieder verwendbaren
Projekt einer dynamischen Webseite vertieft.
Schließlich folgt der Teil der
Anhänge. Ein umfangreiches Nachschlagewerk wurde den Kapiteln beigefügt. Beginnend mit einem Glossar, bietet die
"Kurzreferenz" entgegen ihrem Namen eine umfangreiche Referenz der Befehle und Funktionen. Letztere sind nicht nur auf PHP-spezifische Funktionen beschränkt, sondern geben
auch Auskunft der Datenbankfunktionen und systemnahen Funktionen sowie eine besondere MySQL-Referenz. Ferner findet man eine Aufzählung von Server-Variablen und Statuscodes,
die teilweise detailliert angesprochen werden. Den Schluss bilden ein Index, sowie ein Hinweis auf die Internetseite des Buches, eine weitere Partnerseite und die
E-Mail-Adresse des Autors.
Gesamteindruck:
Es kann ganz schlicht gesagt werden, dass sich der innere Umfang des Buches mit dem äußeren Umfang deckt. Das Buch ist mehr als eine Einführung in PHP. Es ist darüber hinaus
eine Anleitung zur Umsetzung konkreter Aufgaben, die heute standardmäßig an eine dynamische Webseite gestellt werden. Dabei beschränkt sich der Autor nicht auf die bloße
Interaktion von PHP und Datenbankanwendungen, wie es so viele Bücher auf dem Markt tun. Gerade die Techniken der Umsetzung werden genau beschrieben. Die Sprache ist zudem
einfach gehalten. Erfreulicherweise fehlen ermüdende Textpassagen. Selbst einführende theoretische Kapitel sind mit Beispielen aufgelockert. Der Aufbau des Buches folgt dem
System: vom Leichten zum Komplexen. Daher ist es nicht verkehrt, wenn einige Techniken zunächst in Grundzügen erläutert werden, um damit zu arbeiten und später in einem
weiteren Kapitel erneut aufgegriffen werden. Daher wird der Leser an einer entsprechenden Stelle nur häppchenweise mit den Informationen versorgt, die er zur weiteren
Programmierung benötigt. Wenn er später auf Vertiefungen stößt, hilft der Widererkennungseffekt dem leichteren Verstehen.
Dem leichteren Finden von Hinweisen dienen die Randbemerkungen und hervorgehobenen Befehle in Quellcodes. Das Buch ist somit wertvolles Nachschlagewerk.
Insgesamt gesehen kann das Buch für den Anfänger wie auch den Profi empfohlen werden. Einzige Einschränkung: der Anfänger sollte sich Zeit nehmen und Geduld mitbringen. Vor
ihm liegt keine Anleitung, um eben mal schnell ein fertiges Script in die eigene Seite einzubauen. Das Ziel ist eben nicht, Quellcodes zum Abschreiben zu liefern, sondern
Programmieren lernen. Und wie jede neue Sprache erfordert das üben, üben, üben...