Konstruktor(en) falsch benannt

In der dritten Auflage von „Besser PHP programmieren“ ist auf den Seiten 137 und 138 ein gewisses Durcheinander mit den Konstruktoren entstanden. Der Hintergrund ist, dass PHP 4 noch vorgesehen hat, dass der Konstruktor eine Methode ist welche denselben Namen hat wie die Klasse. In PHP 5 funktioniert das zwar auch noch aber ein Konstruktor sollte in PHP 5 den Namen __construct() haben.

Die vorhergehenden Auflagen von „Besser PHP programmieren“ bezogen sich noch auf PHP 4. Bei der Übernahme der Texte für die neue Auflage habe ich auf den Seiten 137 und 138 leider ein paar Sachen mit den Namen der Konstruktoren durcheinander gebracht.

In Listing 4.5 sollte der Konstruktor den Namen __construct() haben und nicht kunde(). Zwar wäre es nicht unbedingt falsch den Konstruktor kunde() zu nennen aber es ist halt PHP 4 und nicht 5. Hier nochmal das Listing 4.5 in einer korrekten Version:

class Kunde extends Kontakt
{
   var $anrede; // die zusätzlichen Eigenschaften
   var $email;
   function __construct ($anrede,$name,$telefon,$email) // Konstruktor
   {
      parent::__construct($name,$telefon); // Konstruktor der Basisklasse aufrufen
      $this->anrede=$anrede; // neue Eigenschaften zuweisen
      $this->email=$email;
   }
   function zeigeAn() // zeigt alle Daten an
   {
      echo "Anrede: $this->anrede <br />"; // Anrede ausgeben
      parent::zeigeAn(); // zeigeAn aus der Basisklasse aufrufen
      echo "<br />E-Mail: $this->email"; // E-Mail ausgeben
   }
}

Des Weiteren findet sich in der Erläuterung des Konstruktors auf Seite 138 diese Zeile:

parent::kontakt($name, $telefon);

Das ist natürlich falsch. Im Code, in Listing 4.5, ist die Zeile korrekt. Das heißt, hier müsste eigentlich

parent::__construct($name, $telefon);

stehen…

Leider hat die Fehler niemand bemerkt bevor das Buch in Druck gegangen ist. Eigentlich ist es ja immer wieder erstaunlich, dass niemand einen solchen Fehler bemerkt. Ich selbst habe den Text geschrieben und mehrfach gelesen. Dann haben ihn noch der Gutachter, der Lektor und die Korrektorin gelesen aber niemandem ist das aufgefallen. Vielen Dank an José Stiller der diesen Fehler gefunden und mir eine Mail geschrieben hat.

Weitere Informationen zu Konstruktoren in PHP 4 und 5 gibt es hier

Einen Kommentar schreiben