Es gibt ein neues Magazin für PHP namens "PHP Journal". Heute ist es an der Zeit, die Ausgabe Januar/Februar 2008 unter die Lupe zu nehmen.
Schon der Name ist so wichtig, dass er auf dem Logo gleich zweimal abgebildet werden musste, horizontal und vertikal:
Auf der StartTitelseite spring einem gleich
einer der Artikel ins Auge: "Webdesign mit Ajax".
Da ich noch nie Fan von <font>-Tags oder CSS war, ich meine
Seiten aber trotzdem schön und stylisch haben möchte, ist dieser
Artikeltitel quasi die Offenbarung. Schalten wir gleich um auf
Seite 52, "Eine eigene Ajax-Engine entwickeln".
Auch dieser Titel ist ziemlich implikativ und macht Lust auf
mehr - denn wer "eine eigene" Engine entwickelt, muss nach Abschluss
dieses Tutorials bestimmt noch eine andere bauen. Oder - was man
dem OpferLeser schon vorher hätte sagen können
- wird auf eine der zig (ja, es gibt Dutzende!) vorgefertigten
Bibliotheken zurückgreifen, da die Implementierung einer kompletten,
eigenen Ajaxengine ... nichttrivial ist.
Aber kommen wir zu den inhaltlichen Aussagen des Artikels. Er wurde von Denny Carl (merken!) geschrieben, der auch gleich mit Werbung für sein Buch "Praxiswissen Ajax" macht. Er scheint also Profi zu sein und zu wissen, worüber er schreibt.
Die vorhin erwähnte Nichttrivialität des Programmierens einer kompletten Ajax-Engine wird im "Auf einen Blick"-Infoblock vollkommen ausgeblendet, denn er verspricht, Zitat: "In diesem Workshop erfahren Sie, wie eine Ajax-Engine programmiert wird, die für alle Anforderungen gerüstet ist" (Fettmarkierung von mir).
Zuerst einmal wird lang und breit darüber philosophiert, dass das "XMLHttpRequest-Objekt" versteckt werden muss. Keinerlei Informationen darüber, was das denn ist, warum wir es denn jetzt brauchen - aber es muss versteckt werden! Ich hätte noch Platz unter meinem Teppich, aber Herr Carl zog das PHPJournal vor.
Über die Bildunterschrift "Ein RSS-Reader, ebenfalls eine typische Ajax-Anwendung" lässt sich streiten. Die mir bekannten RSS-Reader (so um die 10) basieren allesamt nicht auf Ajax, aber "typisch" muss nicht die Mehrheit bedeuten, und meine Erfahrungen mit Feedreadern sind bestimmt nicht so umfassend wie die von Denny.
Ein paar Zeilen später kommen wir zum vorläufigen Highlight des Bildartikels: "Hier zeigt sich ein wahres Festival verschachtelter Anweisungsblöcke". Dies ist die Unterschrift zu einem If-Block, in dem zwei try-catch-Blöcke linear hintereinander gepackt sind. Welch Programmierleistung! 95% aller Programmierer schreiben linearen Code, nur die Mutigsten und Erfahrensten trauen sich an einen If-Block - wer dort rein noch einen try-catch baut, muss wahnsinnig sein. Autor, ich verbeuge mich vor dir ob der Strahlkraft deines Codes.
"Exceptions (...) treten immer dann auf, wenn im Ablauf eines Skripts ... oder der Zugriff auf eine Variable fehltschlägt." Aha. Kein "undefined Variable foo"? Nein, in der Javascript- und moderne-Programmiersprachenwelt von Herrn Carl werden Exceptions geworfen.
Die übernächste Zwischenüberschrift versetzt auch mich in Erstaunen: "Mit XMLHttpRequest programmieren". Yes! Kein Kdevelop, Zend Studio, Eclipse oder Kate mehr - alles was man zum Programmieren braucht, ist XMLHttpRequest. Leider verschweigt der Autor, ob schon die Klasse dazu ausreicht, oder man doch ein Objekt instantiieren muss.
Auf der gleichen Seite ist ein Screenshot eines relativ bekannten Tutorials über "Sortieren-einer-Liste-mit-Maus-programmiert-in-Javascript". Die Bildunterschrift macht deutlich, dass wir auch hier vor Ajax nicht sicher sind: "Listen lassen sich dank Ajax per Drag and Drop ordnen". Was würden wir nur ohne Ajax machen? Was machten die ersten grafischen Programme mit DnD-sortierbaren Listen in den achtziger Jahren, obwohl es noch kein Ajax gab? Was machen die heutigen Javascript-Bibliotheken, die Listen per DnD sortierbar machen, ohne ein einziges Mal was an den Server zu schicken? Zauberei, Magie?
Unvergessen wird mir auch folgender Satz bleiben: "Wäre eine Kuh ein Javascript-Objekt, würde es die Eigenschaft farbe und die Methode gibMilch() haben". Ich würde noch praiseDenny() hinzufügen.
Nach dem doch relativ amüsanten Vergleich von Klassendesign mit der Arbeit eines Produktdesigners für eine Schokoladenfabrik wird eine Aussage getroffen, die ich nicht wirklich bestätigen kann: "Durch diese thematische Abgeschlossenheit sind Klassen ein Garant für angenehmes Programmieren." Ich habe schon mehrere hundert Klassen und Klassenbibliotheken wieder aus meinem Gedächtnis gestrichen, weil sie nicht wirklich durchdacht waren und deshalb nicht für angenehmes Programmieren geeignet waren. Ich überlege noch, in welcher Reihe schlechter Vergleiche Herr Carls Aussage steht.
Der Artikel enthält weitere, nur mit viel gutem Willen zu genießende Aussagen wie "Lightboxes sind ein weiteres Ajax-Anwendungsgebiet". Am Ende des Artikels nochmal der Hinweis auf Herrn Carls offensichtliches Meisterwerk: "Wenn sie mehr über Ajax erfahren wollen, lesen Sie das Buch Praxiswissen Ajax vom Autor dieses Artikels (...)". Leider läßt mich der Genuß dieses Artikels Schlechtes für das Buch und dessen Autor erahnen.
Aber keine Angst, auch das PHP Magazin trifft überdenkenswerte Aussagen: "Mit dem Mac und den anderen iLife-Produkten wird nun ein gemäß dem neuesten Standard anerkanntes Unix ausgeliefert." Der Mac ist ein iLife-Produkt, und iLife-Produkte sind Unix? Die Posse geht noch weiter: "Wie erwähnt, läuft auf iLife-Produkten ebenfalls Unix". Yes! Endlich kann ich in iPhoto grep installieren!