Listing 1.15

In Listing 1.15 auf Seite 54 hat Xylan einen Fehler in der zweiten Zeile entdeckt. Hier fehlt bei dem form-Tag hinter dem Attribut action leider das öffnende Anführungszeichen.
Korrekt würde das öffnende Tag also so aussehen:
<form action="/neu/speichern" method="post">

Vielen Dank für den Hinweis

Wie kann ich’s besser machen?

Guten Tag zusammen,
nachdem das Buch nun ein paar Wochen auf dem Markt ist und ich das erste Feedback erhalten habe, möchte ich ein paar Punkte aufgreifen. Vorher aber vielen Dank an alle, die mir geschrieben oder hier im Blog einen Kommentar hinterlassen haben. Insbesondere möchte ich hier noch einmal Herrn R. Locke danken, der mir viele gute Anregungen zukommen lies.

Erscheinungszeitpunkt
Einer der Kritikpunkte war, dass der Zeitpunkt des Erscheinens unglücklich gelegt war. Das kann ich leider nicht ganz abstreiten. Das Problem dabei ist, dass so ein Buchprojekt recht langwierig ist. Das heißt, wenn man ein solches Buch schreibt, dann dauert das üblicherweise mindestens ein halbes Jahr. In diesem Fall hat das sogar noch ein wenig länger gedauert. Somit war der Erscheinungszeitpunkt schon lange festgelegt bevor die Version 1.5 des Zend Frameworks überhaupt im Gespräch war. Das ist übrigens auch der Grund warum sich im Buch hier und da die Anmerkung findet, dass bestimmte Dinge in der Version 1.1, die es ja nie gab, geändert werden sollen. Anyway, irgendwann muss man ein Buch halt auf den Markt bringen und es wird halt auch immer eine neue Version des ZF geben. Von daher wird bei einem Buch zu einer Software die recht schnell weiterentwickelt wird wohl kein Zeitpunkt wirklich perfekt sein.

Coding Style
OK, ich gebe es zu, ich habe mich bei der Erstellung der Listings nicht an den Coding Style des Zend Frameworks gehalten. Das hat den Grund, dass ich bestimmte Dinge halt in einem anderen Stil bevorzuge. Außerdem muss ich gestehen, dass ich nicht erwartet hätte, dass sich jemand daran stört, dass ich mich nicht an den Coding Style halte, da ich ja keine Klasse für das Framework erstelle sondern nur damit arbeite. Gut, man lernt nie aus, es hat doch den ein oder anderen gestört und ich gelobe Besserung. In der nächsten Auflage werde ich die Listings anpassen.

Vorstellung einzelner Pakete
Eines der grundlegenden Konzepte des Buches ist es, dass ich immer bemüht war die Pakete einzeln vorzustellen. Der Hintergrund ist, dass ich sehr viele Projekte kenne in denen verschiedene Frameworks gemischt genutzt werden. Als Consultant habe ich inzwischen viele PHP-Anwendungen in unterschiedlichster Qualität gesehen. Es war eigentlich in keinem Fall so, dass man dabei konsequent nur auf ein Framework gesetzt hätte. Gerade so Dinge wie PEARs alt gedientes Quickform trifft man sehr oft. Daher dachte ich, dass es hilfreicher wäre die Komponenten “stand-alone” zu beschreiben damit sie auch alle “atomar” eingesetzt werden können. Natürlich müsste ich an dieser Stelle eigentlich das “Zend Framework Fähnchen” hochhalten und dafür werben, dass man immer alles mit dem ZF machen sollte. Allerdings entspricht das meiner Erfahrung nach nicht unbedingt den Anforderungen im Programmieralltag.  muss ich auch zugeben, dass ich mir beim Schreiben an der ein oder anderen Stelle schon komisch vorkam wenn ich die Komponenten nicht miteinander verknüpft habe. Andererseits wäre es halt auch unschön, wenn man erst Zend_Db lernen und verstehen muss um ein Code-Beispiel zu Zend_Feed zu verstehen. Und hier möchte ich die Frage einfach mal an Dich / Sie richten. Was hättet Ihr / hätten Sie erwartet? Sollen die Klassen alle zusammen erläutert und somit Abhängigkeiten geschaffen werden die beim Lernen vielleicht hinderlich sind? Gerade wenn das Buch als Nachschlagewerk genutzt werden soll könnte das stören. Oder macht es Sinn die Klassen weiterhin einzeln vorzustellen und vielleicht zwei oder drei kleine Projekte zu ergänzen, in denen die Klassen dann kombiniert genutzt werden? Anregungen und Vorschläge bitte einfach hier als Kommentar posten oder als Mail an zf-buch@netviser.de. Danke :-)

Oh, und wenn es weitere Anregungen oder Kritikpunkte (oder vielleicht auch Lob?) gibt, dann immer her damit…

And the Winner is…

Das Gewinnspiel ist beendet und Britta war am Samstag so nett die Gewinner zu ziehen.

Britta mit den Losen der Gewinner
Britta mit den Losen der Gewinner

Also, die Gewinner sind *trommelwirbel*

  • T. Huth, Springe-Völksen
  • J. Noest, Münster
  • A. Stösel, Ilmenau

Herzlichen Glückwunsch :-)

Die Bücher sind übrigens schon auf dem Weg. Ich habe sie eben per DHL auf die Reise geschickt.

Listing 2.28…

Nachdem buddy nun schon eine Anmerkung zu Listing 2.28 hatte bekam ich noch eine Mail von Herrn R. Locke (Vielen Dank dafür), der noch etwas in diesem Listing entdeckt hat. Und zwar habe ich an einer Stelle den Namen der abhängigen Tabellen leider nicht korrekt angegeben. In einer Klasse habe ich der Eigenschaft $_dependentTables den Namen der Tabelle zugewiesen, was natürlich nicht korrekt ist. Ich hätte hier den Namen der Klasse übergeben müssen. Die Klasse tabelleKunden aus Listing 2.28 müsste korrekterweise so aussehen:

// Zugriffsklasse für Tabelle kunden
class tabelleKunden extends verbindungsdaten
{
    protected $_name = 'kunden';
    protected $_primary = 'id';
    protected $_dependentTables = ‘bestellungen’;
    protected $_dependentTables = ‘tabelleBestellungen’;
    protected $_sequence = true;
}

Die fehlerhafte Zeile die im Listing vorhanden ist, habe ich durchgestrichen. Die darunter stehende ist die korrekte Variante.

Die Anmerkungen von buddy habe ich hier übrigens nicht eingearbeitet da das Listing dann inkonsistent mit den anderen Listings und dem Text gewesen wäre.

Der buddy wieder…

User “buddy”, der das ZF-Buch sehr genau zu lesen scheint, hat noch eine Anmerkung als Kommentar hinterlassen. Und zwar habe ich leider bei den Namen einiger Klassen ein wenig inkonsistent gearbeitet. Er schrieb:

Im Abschnitt 2.3 “Datenbankzugriff mit Zend_Db_table” wird die UpperCamelCase-Syntax mit dem GROß-geschriebenen Präfix “Tabelle” empfohlen.
Ab Listing 2.28 hat sich bis zum Ende des Abschnitts allerdings das kleingeschriebene Präfix eingeschlichen.
Also
richtig: “TabelleKundendaten”
falsch: “tabelleKundendaten”

Gruß

buddy

Also, das was ich da gemacht habe ist nicht wirklich falsch aber zumindest doch inkonsistent. In Listing 2.28 (ab Seite 104) habe ich den Namen der Klassen mit Kleinbuchstaben eingeleitet obwohl ich vorher empfohlen hatte die Namen mit Großbuchstaben beginnen zu lassen. Kein wirklich dramatischer Fehler aber gut gesehen, buddy. Danke :-)

Leider hat er Recht….

Bei einem der anderen Beiträge hatte “buddy” einen Kommentar hinterlassen, den ich hier mal als neuen Eintrag veröffentliche. Und zwar schrieb er das hier:

Hallo!
Auf Seite 51 im Listing 1.11 zur Parameter-Konfiguration haben mich die Kommentare verwirrt:

// Nutzung von Views unterdürcken
$fc->setParam(’noViewRenderer’, false);
// So einstellen, dass Ausnahmen geworfen werden
$fc->throwExceptions(false);
// Error Handler ausschalten
$fc->setParam(’noErrorHandler’, false);

Sinngemäß wird hier bei jedem Aufruf doch das Gegenteil des jeweiligen Kommentars gemacht, oder?

Gruß
buddy

Nun ja, nachdem ich ein paar Mal gestutzt hatte (die doppelte Verneinung bei noViewRenderer verwirrt mich immer ein wenig), muss ich buddy Recht geben. Natürlich machen die Zeilen genau das Gegenteil von dem was die Kommentare behaupten. Korrekt wäre also das hier:

// Nutzung von Views einschalten
$fc->setParam(’noViewRenderer’, false);
// So einstellen, dass keine Ausnahmen geworfen werden
$fc->throwExceptions(false);
// Error Handler einschalten
$fc->setParam(’noErrorHandler’, false);

Vielen Dank, buddy, da habe ich nicht aufgepasst…

Noch zwei Vehler

Heute bekam ich eine E-Mail von Herrn R. Locke der zwei Fehler erspäht hat. Ich darf hier auch einfach mal aus seiner Mail zitieren. Besser hätte ich es eh nicht formulieren können ;-)

1) Seite 130 fehlt ein Punkt. im 3. Absatz. “nicht gemacht haben sollten
Der Konstruktor erwartet …”

2) 156 2. Tabelle die Beschreibung zu NOT_ALPHA erscheint mir falsch.
Sie haben alphanumerisch geschrieben und nicht alphabetisch. (Also nur
Buchstaben)

Er hat natürlich in beiden Fällen Recht. Vielen Dank für die Mail :-)

Hey, pssst, willst Du ein Buch?

Zend Framework BücherWenn man ein Buch schreibt, dann bekommt man üblicherweise ein paar Belegexemplare. Da stellt sich dann immer die Frage was man damit machen soll. Verkaufen? Neeee, das entspricht irgendwie nicht so richtig dem Open-Source-Gedanken. Verschenken? Gute Idee, aber an wen? Das ein oder andere Exemplar habe ich natürlich schon versprochen aber drei Exemplare könnt Ihr hier gewinnen. Also, wer ein kostenloses Exemplar gewinnen möchte schreibt eine Mail an gewinnspiel@netviser.de (Post-Adresse nicht vergessen). Einsendeschluss ist Freitag der 14.03.2008 um 17:00 Uhr. Natürlich gibt es nur ein Buch pro Person und der Rechtsweg ist ausgeschlossen. Die Gewinner werden dann übrigens von Glücksfee Britta gezogen ;-)

Die ersten Fehler…

Schon bevor es das Buch offiziell zu kaufen gibt hat Herr H. Zirpel die ersten Fehler gefunden. Vielen Dank für die Mail. Ich muss zugeben, dass mich das ein wenig deprimiert hat. Aber gut, ein wirklich fehlerfreies Buch zu schreiben scheint nicht möglich zu sein :-(

Ich darf hier einfach mal aus seiner Mail zitieren, die er mir geschickt hat:

Kapitel Einleitung (Seite 13., dritter Absatz):
Falscher Link: “http://framework.zend.com/manual/coding-standard.html”
==> korrekt: “http://framework.zend.com/manual/en/coding-standard.html

Kapitel 1.2 (Seite 27, dritter Absatz):
“Die Ordner html und application befinden sich in diesem Beispiel auf einer Ebene, wobei nicht erforderlich ist.”
==> “…wobei _dies_ nicht erfoderlich ist.”

Kapitel 1.2.2 (Seite 33, erster Absatz):
“Geben Sie weder Controller nach Action an, wird beides implizit durch index ersetzt,”
==> “…weder Controller n_o_ch Action an,…”

Bei dem Link möchte ich zu meiner Ehrenrettung erwähnen, dass der ursprünglich mal funktioniert hat. Ehrlich ;-)

Nun ist’s bald so weit

In der nächsten Woche sollte das Buch nun endlich im (Online-) Handel sein. Lange hat es gedauert bis es endlich so weit war. An dieser Stelle möchte ich mich noch einmal ganz herzlich bei allen bedanken, die mich beim Schreiben des Buches unterstützt haben. Besonderer Dank geht an meinen Lektor Stephan Mattescheck und meinen Gutachter Gaylord Aulke; beide haben es mit mir nicht leicht gehabt ;-)

Ein wenig schade ist, dass ein paar Tage nachdem ich das Manuskript abgegeben hatte, bereits die Version 1.5 des ZF angekündigt wurde.  Änderungen, die sich durch die neue Version ergeben, werde ich hier natürlich nachhalten.