PHP 5 & PEAR

Errata zum Buch

Wir haben uns Mühe gegeben, dieses Buch so fehlerfrei wie möglich zu erstellen. Trotzdem schleichten sich einige Fehler ein.
    Auf diesen Errata-Seiten finden Sie für die uns bekannten Fehler die entpsrechenden Korrekturen.
    Sie haben weitere Fehler gefunden oder einen Verbesserungsvorschlag: Sie können uns unter dem Menüpunkt Kontakt eine Nachricht zukommen lassen. Wir freuen uns über jeden Hinweis.


Vorwort – Seite vii

Der Satz auf Seite vii:

Wie Sie PEAR auf den ISP bekommen, erfahren Sie bei den Installationsanleitungen im Anhang B.

sollte folgendermaßen lauten:

Wie Sie PEAR auf Ihren Webspace bekommen, erfahren Sie bei den Installationsanleitungen im Anhang B.


Vorwort – Seite viii

Auf der Seite viii ist uns ein Fehler beim Umbruch des Wortes Webanwendung unterlaufen:

Sie haben die Idee einer We-
banwendung und wollen wissen, wie Sie dieses Konzept erstellen?

sollte an der Stelle Web- umgebrochen werden:

Sie haben die Idee einer Web-
anwendung und wollen wissen, wie Sie dieses Konzept erstellen?


Vorwort – Seite ix

Auf Seite ix hat der Fehlerteufel gleich zweimal zugeschlagen.
    Der Satz:

bei allen Kursteilnehmern an der FHT-Ess-
lingen für ihre Geduld, beim PHP-Dokumentationsteam - hier beson-
ders Dr. Egon Schmid, bei Stefan Münz für seine erstklassige HTML-
Referenz SELF-HTML und bei den Regulars aus #php.de.

sollte wie folgt lauten:

bei allen Kursteilnehmern an der FHT Ess-
lingen
für ihre Geduld, beim PHP-Dokumentationsteam - hier beson-
ders Dr. Egon Schmid, bei Stefan Münz für seine erstklassige HTML-
Referenz SELFHTML und bei den Regulars aus #php.de.


Einleitung – Seite 4

Auf Seite 4 haben wir ein Komma zuviel:

Bei weit über zweitausend dokumen-
tierten Befehlen und Funktionen, findet sich zu jeder Problemstellung
schnell eine Lösung.

sieht korrigiert so aus:

Bei weit über zweitausend dokumen-
tierten Befehlen und Funktionen findet sich zu jeder Problemstellung
schnell eine Lösung.


Einleitung – Seite 8

Auf Seite 8 in der Aufzählung ist uns ein stilistischer Fehler unterlaufen.
    Der Punkt:

Definiert Standards, um Entwickler beim Schreiben von portablem und wieder verwendbarem Code zu unterstützen.

sollte lauten:

PEAR definiert Standards, um Entwickler beim Schreiben von portablem und wieder verwendbarem Code zu unterstützen.


Die Skriptsprache PHP – Seite 23

Auf Seite 23 sind uns zwei Tippfehler mit dem <br />-Tag unterlaufen.
    Die Sätze:

Zeilenumbrüche erwirken Sie in HTML mit dem <br >-Tag.
Beachten Sie, dass nach dem <br >-Tag kein Zeilenumbruch erfolgt.

heißen richtig:

Zeilenumbrüche erwirken Sie in HTML mit dem <br />-Tag.
Beachten Sie, dass nach dem <br />-Tag kein Zeilenumbruch erfolgt.


Die Skriptsprache PHP – Seite 31

Am Anfang der Seite 31 hat sich ein falscher Artikel eingeschlichen.
    Der Satz:

Das Pluszeichen "+" ist
hierbei der binäre Operator, weil er mit zwei Operanden – die Zahlen 3 und
5 – verwendet wird.

heißt richtig:

Das Pluszeichen "+" ist
hierbei der binäre Operator, weil er mit zwei Operanden – den Zahlen 3 und
5 – verwendet wird.


Die Skriptsprache PHP – Seite 31

Auf der Seite 31 befindet sich leider noch ein Tippfehler
    Der Satz:

Eine Variable wird in einem Ausdruck durch seinen Wert
ersetzt:

heißt richtig:

Eine Variable wird in einem Ausdruck durch ihren Wert
ersetzt:


Die Skriptsprache PHP – Seite 32

In "Listing 2-21" ist uns ein Rechenfehler unterlaufen
    Das Listing:

<?php $a = 17 + 5; echo $a; // Gibt 23 aus ...

heißt richtig:

<?php $a = 17 + 6; echo $a; // Gibt 23 aus ...

Die Skriptsprache PHP – Seite 35

Im "Listing 2-27" fehlt ein Leerzeichen in der echo-Anweisung.
    Alte Version:

<?php $a = 'PHP'; $b = 5; echo $a . ' ' . $b . 'ist toll!'; // Ausgabe: PHP 5 ist toll! ?>

Neue Version:

<?php $a = 'PHP'; $b = 5; echo $a . ' ' . $b . ' ist toll!'; // Ausgabe: PHP 5 ist toll! ?>

Grafiken mit PHP erzeugen und bearbeiten – Seite 130

In der Grafik "Abbildung 9.1 Grafikgenerierung und -anzeige" fehlt ein doppeltes Hochkomma.
    Der HTML-Code im oberen Teil der Grafik:

<img src="graph.php" width="200 height="50" />

lautet richtig:

<img src="graph.php" width="200" height="50" />

Objektorientiert modellieren – Seite 178

Bei der Tabellenbeschreibung der Tabelle Kunde haben wir die Auslassungspunkte vergessen.
    Die Tabellenbeschreibung lautet bisher:

Tabelle Kunde: <#KundeId, >

Richtig ist:

Tabelle Kunde: <#KundeId, ... >


Objektorientiert programmieren in PHP 5 – Seite 187

Bei der Marginalie zum "Listing 12-4" wurde ein falsches Skript angegeben.
    Die Randbemerkung lautet bisher:

Anwendung von Mitarbeiter.php (Auszug)

Richtig ist:

Anwendung von Link.php (Auszug)


Objektorientiert programmieren in PHP 5 – Seite 189 und 190

Im Abschnitt "1:n-Beziehung abbilden" haben wir ein falsches Beispiel eingefügt. Im Beispiel zur 1:n-Beziehung steht das Hilfsattribut auf der n-Seite der 1:n-Beziehung (Klasse Artikel). Auf der 1-Seite der Beziehung (Artikelgruppe) ist kein Verweis zur Artikelklasse festgehalten.
    Das Hilfsattribut in Form einer Liste muss bei einer 1:n-Beziehung immer auf der 1-Seite stehen – das Hilfsattribut in Form einer "normalen" Variable auf der n-Seite.
    Der Abschnitt:

    Diese 1:n-Beziehung können Sie mit Hilfe einer Liste in PHP in der
Artikel-Klasse abbilden. Dazu definieren Sie in der Klasse Artikel ein-
fach ein Hilfsattribut in der Form einer Liste, in der Sie alle Artikelgrup-
penobjekte (oder deren Ids) ablegen. Die Liste können Sie
als Array oder in Objektform definieren. Mit der Methode linkObject()
können Sie die Beziehungsliste ändern. An folgendem Beispiel erkennen
Sie, wie Sie eine Liste als Array umsetzen können.

muss folgendermaßen lauten:

    Diese 1:n-Beziehung können Sie mit Hilfe einer Liste in PHP in der
Artikelgruppen-Klasse abbilden. Dazu definieren Sie in der Klasse Arti-
kelgruppe (1-Seite der Beziehung) einfach ein Hilfsattribut in der Form
einer Liste, in der Sie alle Artikelobjekte (oder deren Ids) ablegen kön-
nen. Die Liste können Sie als Array oder in Objektform definieren. Mit
der Methode linkObject() der Klasse Artikelgruppe können Sie die
Beziehungsliste mit den Artikeln ändern. In der Klasse Artikel (n-Seite
der Beziehung) halten Sie genau eine Artikelgruppe im entsprechenden
Hilfsattribut fest. Mit der Methode linkObject() der Klasse Artikel
können Sie das Hilfsattribut Artikel ändern. An folgendem Beispiel er-
kennen Sie, wie Sie die Liste als Array umsetzen können.

Das alte Listing 12-5 auf Seite 190:

<?php class Artikel { // ... var $listeArtikelgruppe = array(); // .. function linkObject($Artikelgruppe) { // Artikelgruppenobjekt in Liste einfügen $listeArtikelgruppe[] = $Artikelgruppe; } // ... } class Artikelgruppe{} $Artikel = new Artikel(); $Artikelgruppe = new Artikelgruppe(); $Artikel->linkObject($Artikelgruppe); ?>

sieht dann in der neuen Version folgendermaßen aus:

<?php class Artikelgruppe { // ... var $bezeichnung = 'Test-Artikelgruppe'; var $listeArtikel = array(); // ... function getBezeichnung() { return $this->bezeichnung; } function linkObject($Artikel) { // Artikelobjekt in Liste einfügen. $this->listeArtikel[] = $Artikel; } // ... } class Artikel { // ... var $artikelgruppe; var $artikelnummer = 1; // ... function linkObject($Artikelgruppe) { // Artikelgruppennamen merken. $this->artikelgruppe = $Artikelgruppe->getBezeichnung(); // Artikel in der Artikelgruppe registrieren. $Artikelgruppe->linkObject($this); } } $Artikel = new Artikel(); $Artikelgruppe = new Artikelgruppe(); $Artikel->linkObject($Artikelgruppe); ?>

Objektorientiert programmieren in PHP 5 – Seite 194 und 195

Bei der Klasse Firma haben wir die set- und get-Methode für das Attribut Branche vergessen. Das UML-Diagramm auf Seite 196 dieser Klassenbeziehung haben wir entsprechend angepasst.
    Wir erweitern die Klasse Firma:

// Konstruktor function __construct($branche) { $this->branche = $branche; } // Alle anderen Methoden function setName($name) { $this->name = $name; } function getName() { return $this->name; }

um eine set- und get-Methode für das Attribut Branche:

// Konstruktor function __construct($branche) { $this->branche = $branche; } // Alle anderen Methoden function setName($name) { $this->name = $name; } function getName() { return $this->name; } function setBranche($branche) { $this->branche = $branche; } function getBranche() { return $this->branche; }


Objektorientiert programmieren in PHP 5 – Seite 195

Bei der Erzeugung eines Firma-Objektes haben wir das abschließende Semikolon vergessen.
    Die Aufruf lautet bisher:

$FastFood = new Firma('Fast-Food-Laden') // Firma ist Fast-Food-Laden

Richtig ist:

$FastFood = new Firma('Fast-Food-Laden'); // Firma ist Fast-Food-Laden


Objektorientiert programmieren in PHP 5 – Seite 206

Bei der Klasse Kind haben wir ein "extends" und das Schlüsselwort "function" vergessen.
    Wir passen die Klasse Kind:

class Kind { felsenfest() {} // Fehler, da Methode final! }

entsprechend an:

class Kind extends Mutter { function felsenfest() {} // Fehler, da Methode final! }


Objektorientiert programmieren in PHP 5 – Seite 210

Bei der Zuweisung an $this->money haben wir das abschließende Semikolon vergessen.
    Die Aufruf lautet bisher:

public function setMoney($money) { $this->money = $money }

Richtig ist:

public function setMoney($money) { $this->money = $money; }


Objektorientiert Programmieren in PHP 5 – Seite 211 und 219

In den Listings "Listing 12-16" auf Seite 211 und in "Listing 12-22" auf Seite 219 haben wir bei den HTML-Zeilenumbrüchen den Slash an der falschen Stelle positioniert. Dadurch werden die Zeilen in Ihrem Browser nicht umgebrochen. Wir haben die Zeilenumbrüche richtiggestellt. Somit finden Sie ab sofort im Codearchiv die richtig gestellten Zeilenumbrüche in den entsprechenden Listings.
Alte Version:

... // Attribute direkt oder über Methode auslesen echo $Bank->getMoney() . '</br>'; echo $Bank->money . '</br>'; ...

Neue Version:

... // Attribute direkt oder über Methode auslesen echo $Bank->getMoney() . '<br />'; echo $Bank->money . '<br />'; ...

PEAR-Grundlagen – Seite 240

Im Unterabschnitt "PEAR installieren" und haben wir vergessen die PEAR-Konfigurationsdatei zu kopieren. Dadurch wurde die Installation von PEAR auf einem ISP unnötig erschwert.
    Sie kopieren die pear.conf-Datei und können im Unterabschnitt "PEAR konfigurieren" einen Absatz streichen:

Kopieren Sie nun die Datei index.php mit Ihrem FTP-Programm aus
dem Verzeichnis /pear in Ihr Verzeichnis /beispiel/conf, das vom Web
aus erreichbar ist.

lautet nun:

Kopieren Sie nun die Dateien index.php und pear.conf mit Ih-
rem FTP-Programm aus dem Verzeichnis /pear in Ihr Verzeichnis
/beispiel/conf, das vom Web aus erreichbar ist.

Im Unterabschnitt "PEAR konfigurieren" können Sie nun folgenden Absatz streichen:

Rufen Sie nun per Web diese index.php auf. Damit starten Sie den Web-
Paketmanager von PEAR. Mit diesem Manager können Sie Pakete in-
stallieren, deinstallieren und updaten.
    Als Nächstes müssen Sie im Package-Manager noch Verzeichnisse
einstellen. Sorgen Sie unter dem Menüpunkt Config dafür, dass statt
des Standardpfades Ihr Pfad zu Ihrem /pear-Verzeichnis steht – zum Beispiel /homepages/42/a123456789/htdocs/pear.


PHPUnit – Seite 330

Der Satz:

Einige Monate später: Wir überarbeiten unsere Anwendung mit hunderten von Klasse vollständig, darunter auch unsere obengenannte Klasse.

muss natürlich lauten:

Einige Monate später: Wir überarbeiten unsere Anwendung mit hunderten von Klassen vollständig, darunter auch unsere obengenannte Klasse.


Lösungen – Seite 396

In "Listing D-10" schreiben wir unnötiger Weise zwei Mal in die Grafik. Dank unserem aufmerksamen Leser Peter Forster, können wir das hier nun richtig stellen.
    Wir streichen drei Zeilen aus "Listing D-10 Einen Text in eine Grafik schreiben":

... } else if (($hoehe_umgebrochen / $spalte) <= 1 ) { // Eine "Zeile" breit in die Grafik schreiben, // den Text umbrechen und weiterschreiben. $text = $str; for ($i = 0; $i < $hoehe_umgebrochen; $i++) { $text = substr($str, $zeile * $i, $zeile); imageString($grafik, $font, 0, $hoehe * $i, $text, $schwarz); } $text = substr($str, $zeile * $i, $zeile); imageString($grafik, $font, 0, $hoehe * $i, $text, $schwarz); } else { ...