Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort
Vorwort
1 PEAR – Einführung
2 Authentication
3 Caching
4 Date and Time
5 File Formats
6 HTTP
7 Internationalization
8 Mail
9 Networking
10 PHP
11 Text
12 Web Services
13 Benchmarking
14 Configuration
15 Database
16 File System
17 HTML
18 Images
19 Logging
20 Math
21 Numbers
22 Tools and Utilities
23 XML
24 Selbst Pakete erstellen
25 PECL
Index
Ihre Meinung?

Spacer
 <<   zurück
PHP PEAR von Carsten Möhrke
Anwendung und Entwicklung – Erweiterungen für PHP schreiben
Buch: PHP PEAR

PHP PEAR
798 S., 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-580-0
gp 1 PEAR – Einführung
  gp 1.1 Objektorientierung in PHP
    gp 1.1.1 Spezielle Methoden
    gp 1.1.2 Erweitern von Klassen
    gp 1.1.3 Statische Methoden
    gp 1.1.4 Factory-Methoden
    gp 1.1.5 Zuweisen von Objekten
    gp 1.1.6 Objektorientierung in PHP 4
  gp 1.2 PEAR – ein Überblick
    gp 1.2.1 Die PEAR-Website
    gp 1.2.2 Auswahl von Paketen
  gp 1.3 Installation von PEAR-Paketen
    gp 1.3.1 Installation über die Kommandozeile
    gp 1.3.2 Installation über eine grafische Oberfläche
    gp 1.3.3 Nutzung auf einem Shared Server
    gp 1.3.4 Allgemeines zur Nutzung von Paketen
    gp 1.3.5 Fehlerbehandlung
    gp 1.3.6 Unterstützung
    gp 1.3.7 Bugs
  gp 1.4 Der PEAR-Coding Standard
    gp 1.4.1 Aufbau der Dateien
    gp 1.4.2 Klammersetzung
    gp 1.4.3 Namenskonvention


Rheinwerk Computing

1.3 Installation von PEAR-Paketen  downtop

PEAR zu installieren gestaltet sich üblicherweise unproblematisch. Allerdings muss ich zugeben, dass es an einigen Stellen ein wenig schwierig werden kann, wenn Sie auf einem Shared Host arbeiten.

Die PEAR-Kernkomponenten gehören mit zum Standard-Lieferumfang von PHP. Sie werden standardmäßig erzeugt, wenn PHP kompiliert wird. Sollte kein PEAR vorhanden sein, wurde das bei der Übersetzung von PHP explizit definiert. Auf einigen Systemen, wie zum Beispiel BSD, kann PEAR dann mithilfe eigens dafür definierter Pakete nachinstalliert werden.

Üblicherweise sollte es also nur notwendig sein, die Pakete zu installieren, die Sie nutzen wollen.


Rheinwerk Computing

1.3.1 Installation über die Kommandozeile  downtop

Die Installation über die Kommandozeile ist zwar nicht sonderlich komfortabel, aber ist meiner Ansicht nach der beste Weg.

Der Befehl, den Sie auf der Kommandozeile – egal ob unter Linux, einem Unix-Derivat oder Windows – nutzen können, heißt pear. Dem Programm teilen Sie mithilfe von Argumenten mit, was es für Sie tun soll. Um Hilfe zu erhalten, tippen Sie pear help ein. Sie erhalten dann eine Liste mit Argumenten, die allgemein beschrieben sind. Um genauere Informationen zu einer der Optionen zu erhalten, geben Sie pear help, gefolgt von dem Namen der Option ein. Sie erhalten dann eine umfangreiche Hilfe-Seite, die die Möglichkeiten der Option erläutern.

Möchten Sie ein neues Paket installieren, geben Sie nach dem Befehl pear das Argument install ein, worauf der Name des Pakets anzugeben ist. Mit

pear install Services_Weather

installieren Sie das Paket Services_Weather. pear lädt das Paket vom eingestellten Server herunter, entpackt die Dateien und kopiert sie in die korrekten Verzeichnisse. Über den Fortschritt der Installation informiert das Tool Sie, wie Sie in Abbildung 1.6 sehen können.

Abbildung 1.6 Installation über die Kommandozeile

Das Installationsprogramm kann Pakete aber nicht nur anhand des Namens installieren. Sie können auch eine URL angeben, unter der die gepackte Datei zu finden ist:

pear install http://smiling.net/download.php?Mail_IMAP-2.0.tgz

Das kann aus zwei Gründen hilfreich sein. Zum einen könnte es sein, dass ein Paket nicht auf dem PEAR-Server liegt. Das kommt dann vor, wenn Sie ein Paket installieren wollen, das nicht zum PEAR-Projekt gehört, oder wenn der Entwickler auf seinem eigenen Server eine aktuellere Version hat.

Zum anderen kann es aber auch passieren, dass Sie ein Paket installieren wollen, das noch nicht als stable gekennzeichnet ist. Nur Pakete, die ausführlich getestet wurden und bei denen keine weiteren Fehler bekannt sind, erhalten diesen Status. Unter Umständen kann es aber mal vorkommen, dass Sie eine Version installieren wollen, die diesen Zustand noch nicht erreicht hat. Dazu können Sie entweder die URL angeben, die Sie auf der Homepage des Pakets finden, oder Sie ändern den »Preferred Installation State«. PEAR kennt fünf Status, die Sie als bevorzugt für die Installation festlegen können. Hierbei handelt es sich um:

  • snapshot Ein »Schnappschuss« aus der aktuellen Entwicklung, ohne jegliche Garantie für das Verhalten oder die Qualität des Pakets. Sollte normalerweise nur von Entwicklern genutzt werden, die an dem Paket arbeiten.
  • devel Eine Entwickler-Version, die nur zum Experimentieren genutzt werden sollte.
  • alpha Eine Alpha-Version kann nach wie vor Fehler enthalten, und es können sich Änderungen in der API ergeben. Sollte nicht produktiv genutzt werden.
  • beta Eine Beta-Version sollte weitgehend stabil sein, kann allerdings noch Fehler enthalten. Änderungen in der API sollten sich nicht mehr ergeben.
  • stable Eine Version, die keine bekannten Fehler mehr enthält und für die produktive Nutzung freigegeben ist.

Möchten Sie einen anderen Versionsstand als stable als bevorzugten Standard eintragen, so nutzen Sie

pear config-set preferred_state beta

wobei das beta natürlich durch die Versionskennung zu ersetzen ist, die Sie bevorzugen. Sie können also beispielsweise für die Installation eines Pakets den Modus auf beta stellen, nur sollten Sie ihn danach wieder auf stable stellen, weil sonst bei jeder nachfolgenden Installation alle Pakete im Beta-Stadium bevorzugt werden.

Sie werden feststellen, dass einige Versionen auch als RC (Release Candidate) gekennzeichnet sind. Hierbei handelt es sich um Beta-Versionen in einem »späten Stadium«. Das Paket steht also kurz vor einem stable-Release.

Bei der Installation eines Pakets wird überprüft, ob alle Abhängigkeiten erfüllt sind. Es kann Ihnen also passieren, dass ein Paket nicht installiert werden kann, weil es andere Pakete oder eine bestimmte PHP-Version benötigt, um zu funktionieren. In dem Fall schlägt die Installation fehl, und Sie müssen zuerst die entsprechenden Pakete installieren oder Ihre PHP-Version aktualisieren. Welches Problem vorliegt, teilt das Installationsprogramm Ihnen mit.

In einigen Fällen gibt es auch Abhängigkeiten, die nur dann erfüllt sein müssen, wenn Sie bestimmte Funktionalitäten in einem Paket nutzen wollen. In so einem Fall weist der Installer Sie darauf hin, installiert das Paket aber trotzdem korrekt. Sie können dann normal mit dem Paket arbeiten, müssen halt nur auf einige Funktionalitäten verzichten.

Übergeben Sie dem Installer den Parameter --alldeps (oder -a), werden automatisch alle erforderlichen und optionalen Abhängigkeiten erfüllt. Ergänzen Sie die Kommandozeile um --onlyreqdeps (oder -o), werden nur Anhängigkeiten automatisch erfüllt, die obligatorisch sind.

Pakete, die installiert sind, müssen zwischendurch auch mal aktualisiert werden. Hierzu ist die Option upgrade vorgesehen. Wenn Sie nach der Option upgrade den Namen eines Paketes angeben, so wird nur dieses Paket aktualisiert:

pear upgrade text_wiki

Hiermit würde also das Paket text_wiki aktualisiert. Dieser Prozess ersetzt die bestehenden Dateien des Pakets. Daher sollten Sie die Originaldateien der Pakete also auch nicht verändern, weil die Änderungen bei einem Update verloren gehen.

Wenn Sie alle Pakete auf einmal aktualisieren wollen, können Sie pear upgrade-all aufrufen. Dann wird überprüft, welche Pakete auf dem PEAR-Server in einer aktuelleren Version vorliegen. Diese werden heruntergeladen und aktualisiert.

Alle Pakete auf einmal zu aktualisieren sollte aber nicht unbedingt der Standard sein. Idealerweise sollten Sie jedes Paket für sich aktualisieren und Ihre Applikationen dann testen, ob sie noch so funktionieren, wie das vorgesehen war.

Um in Erfahrung zu bringen, welche der installierten Pakete aktualisiert werden sollten, können Sie pear list-all oder pear list-upgrades ausführen. Die erste Variante des Befehls listet alle Pakete auf, die im PEAR-Projekt vorhanden sind. Bei den Paketen, die auf Ihrem Server installiert sind, finden Sie zwei Versionsnummern: links die lokalen und rechts die auf dem PEAR-Server. Bei Paketen, die nicht bei Ihnen installiert sind, ist natürlich nur eine Versionsnummer zu finden. pear list-upgrades zeigt Ihnen nur die Pakete auf Ihrem Server, die aktualisiert werden können. Eine solche Liste könnte beispielsweise so aussehen:

Package        Local             Remote         Size 
Archive_Tar    1.1 (stable)      1.3.0 (stable) 14.9kB 
Benchmark      1.2.1 (stable)    1.2.2 (stable)  5.8kB

Auch hier finden Sie links die installierte Version und rechts die Version, die auf dem Server zur Verfügung steht.

Vor einer Aktualisierung prüfen Sie bitte das Changelog darauf, was sich in den Versionen geändert hat.

Sollte es notwendig sein, können Sie natürlich auch ein Paket deinstallieren. Hierzu ist die Option uninstall vorgesehen, nach der Sie den Namen des Pakets angeben, das entfernt werden soll. Das funktioniert natürlich nur dann, wenn das Paket, das Sie entfernen wollen, nicht von anderen Paketen benötigt wird.

Das sind die wichtigsten Optionen und Möglichkeiten des PEAR-Installationsprogramms. Mehr Funktionalität ist in den meisten Fällen nicht erforderlich. Allerdings möchte ich nicht verheimlichen, dass das Programm noch viel mehr kann. So können Sie es mit einem Passwort sichern, oder Sie können beispielsweise auch die Pfade ändern oder einen anderen als den PEAR-Server definieren.


Rheinwerk Computing

1.3.2 Installation über eine grafische Oberfläche  downtop

Es gibt verschiedene Möglichkeiten, PEAR mithilfe einer grafischen Oberfläche zu installieren. Grafische Oberflächen sind gerade dann, wenn Sie angemieteten Webspace haben und sich den Server mit anderen Leuten teilen, eine gute Alternative. In so einem Fall ist es meiner Meinung nach am geschicktesten, das Web-Frontend, das Sie unter http://go-pear.org [Die URL muss wirklich ohne www vor der Domain angegeben werden. ] herunterladen können, zu nutzen. Die Website zeigt Ihnen den Quelltext eines Scripts. Diesen kopieren Sie einfach in einen Editor und speichern ihn als PHP-Datei in einem Verzeichnis, auf das Ihr Webserver zugreifen kann. Alternativ können Sie die Datei natürlich auch mit wget oder einem ähnlichen Tool herunterladen.

In den folgenden Beispielen wurde die Datei von Go-PEAR in einem Unterverzeichnis namens pear als install.php abgespeichert. Bei dem Server handelt es sich um einen Shared Server eines großen deutschen Providers, der in keiner Weise besonders konfiguriert wurde.

Nachdem Sie die Datei im Browser aufgerufen haben, werden Sie zunächst nach den Verzeichnissen gefragt, in denen die Komponenten installiert werden sollen.

Abbildung 1.7 Die Oberfläche von Go-PEAR im Browser

Normalerweise ist es hier nicht notwendig, Änderungen vorzunehmen. In der Zeile Installation prefix finden Sie das Basisverzeichnis, in dem sich der Installer selbst befindet. Die anderen Verzeichnisse, in denen die PEAR-Dateien abgelegt werden, befinden sich alle unterhalb dieses Verzeichnisses. Sind alle Verzeichnisse so konfiguriert, wie es Ihren Vorstellungen entspricht, können Sie mithilfe einer Checkbox noch selektieren, ob die Pakete DB, Net_Socket, Net_SMTP, Mail, XML_Parser und PHPUnit automatisch mit installiert werden sollen. Da diese Pakete von vielen anderen Paketen benötigt werden, ist das sinnvoll. Klicken Sie unten auf der Seite auf Install, so werden die entsprechenden Dateien heruntergeladen und installiert. Bitte vergessen Sie nicht, dass der Server Schreibrechte auf das entsprechende Verzeichnis benötigt.

Der Download der Dateien und die Installation werden im folgenden Bildschirm durchgeführt. Nachdem die Dateien heruntergeladen und installiert worden sind, finden Sie unten in der Seite die Information, in welchem Verzeichnis die Dateien installiert wurden:

Note: To use PEAR without any problems you need to add your PEAR 
Installation path (/homepage/11/d331252132/htdocs/netviser/pear/PEAR) 
to your include_path.

Bitte notieren Sie sich diesen Pfad, da Sie ihn später noch benötigen werden.

Das Installationsprogramm erstellt eine neue Datei namens index.php, über die Sie die Pakete verwalten können. Sobald Sie die Datei im Browser aufrufen, erhalten Sie eine Darstellung wie die in Abbildung 1.8.

Abbildung 1.8 Die Paket-Verwaltung

Wenn Sie genau hinsehen, wird Ihnen in Abbildung 1.8 vielleicht etwas Ungewöhnliches auffallen. So wird die Versionsnummer des Pakets Archive_Tar mit 1.1 für die lokale Version und 1.3 für die aktuelle Version angegeben. Das erscheint ein wenig ungewöhnlich. Da die Installation gerade erst durchgeführt wurde, sollten an sich alle Pakete aktuell sein. Dieses Problem resultiert daraus, dass das Installationsprogramm zielsicher erkennt, dass PEAR bereits auf dem Server installiert ist, da es standardmäßig mit PHP ausgeliefert wird.

Klicken Sie in dem Fall bitte in der linken Navigation auf Configuration, und korrigieren Sie im danach ausgegebenen Formular die folgenden Pfade:

  • PEAR directory
  • PEAR data directory
  • PEAR test directory
  • PEAR documentation directory

Als PEAR directory tragen Sie den Pfad ein, den das Installationsprogramm Ihnen zurückgeliefert hat. Die anderen drei Pfade setzen sich aus dieser Pfad-Angabe zuzüglich des Unterverzeichnisses data, test bzw. doc zusammen, das Sie bitte anhängen.

Haben Sie die entsprechenden Änderungen vorgenommen, sollten Sie, wenn Sie auf Package Management und dann auf list installed packages klicken, feststellen, dass die Versionsnummern unter Local und Latest übereinstimmen.

Zusätzlich sollten Sie das Verwaltungsprogramm unbedingt noch mit Benutzernamen und Passwort sichern, damit nicht jeder einfach Ihre Installation verändern kann. Jedoch sind die Felder username und password in der Konfiguration dazu nicht gedacht. Daher würde ich eine Sicherung über eine .htaccess-Datei oder Ähnliches empfehlen.

Nachdem das Programm komplett installiert ist, können Sie die Pakete darüber verwalten.

In der Liste der Pakete werden sowohl PEAR- als auch PECL-Pakete aufgelistet. PEAR-Pakete sollten auf einem Shared Server in den meisten Fällen ohne Probleme zu installieren sein. Bei PECL-Paketen wird das meist nicht der Fall sein.

Möchten Sie herausfinden, was ein PEAR- und was ein PECL-Paket ist, klicken Sie am einfachsten auf das Informationssymbol mit dem roten Plus. Damit werden Sie auf die Homepage des Pakets weitergeleitet.

Ansonsten ist die Benutzeroberfläche einfach zu bedienen. Mit einem Klick auf das grüne Pluszeichen können Sie ein Paket installieren. Ein installiertes Paket kann mithilfe des Mülltonnensymbols wieder entfernt werden. Auch hierbei sind natürlich die Abhängigkeiten der Pakete zu beachten.

Standardmäßig installiert auch die grafische Oberfläche nur Pakete, die den Status stable erreicht haben. Möchten Sie das ändern, können Sie unter dem Menüpunkt Configuration einen der Status, die auf Seite 37 erläutert sind, nutzen.


Rheinwerk Computing

1.3.3 Nutzung auf einem Shared Server  downtop

Sind die Pakete auf einem Shared Server korrekt installiert, sollte die Nutzung kein Problem mehr darstellen. Wie schon erwähnt, müssen die Klassendateien mithilfe von require_once() in den Quelltext des Programms eingebunden werden. Allerdings müssen Sie dann noch den include_path verändern, so dass die Pakete auch gefunden werden können. Bitte versuchen Sie nicht, die Pakete dadurch einzubinden, dass Sie den kompletten Pfad angeben. Da die meisten Pakete noch weitere Dateien einbinden, würde das dann fehlschlagen. Folgendes kleines Script könnten Sie im Kopf einer jeden Seite einbinden, um sicherzustellen, dass alle Pfade korrekt gesetzt sind:

// Neuer Pfad, der hinzugefuegt werden soll 
$pear_path='/homepage/11/d1252132/htdocs/netviser/pear/PEAR'; 
// Alten Pfad auslesen 
$std_path=ini_get('include_path'); 
// Windows- oder UNIX-Derivat? 
if (true == eregi ('Win',$_SERVER['SERVER_SOFTWARE'])) 
{  // Windows => Semikolon nutzen 
   $new_path="$std_path;$pear_path"; 
} 
else 
{  // UNIX => Doppelpunkt 
   $new_path="$std_path:$pear_path"; 
} 
// Neuen Pfad setzen 
ini_set('include_path',$new_path);

Das PEAR-Manual schlägt vor, den include_path einfach nur mit dem Pfad der PEAR-Installation zu überschreiben. Allerdings führt das dazu, dass andere Include-Verzeichnisse überschrieben werden, so dass ich diese Variante bevorzugen würde.

Danach können Sie die Klassendatei mit einem require_once() einbinden, wie es auch in den Beispielen gezeigt wird.


Rheinwerk Computing

1.3.4 Allgemeines zur Nutzung von Paketen  downtop

Um eines der PEAR-Pakete nutzen zu können, müssen Sie mindestens die Datei, in der die »Hauptklasse« definiert ist, in Ihren Code einbinden. In einigen Fällen müssen Sie auch noch weitere Dateien einbinden, was aber kein Problem darstellen sollte. Welche Dateien Sie einbinden müssen, können Sie immer der Tabelle am Anfang eines jeden Kapitels entnehmen.

Die Dateien sollten Sie unbedingt immer mit require_once() einbinden. Die Funktion ist deswegen sinnvoll, da Sie damit sicherstellen, dass Ihr Script abbricht, wenn die Datei nicht gefunden werden kann, und die Datei nicht mehrfach eingebunden wird.

In einigen Fällen ist es nötig, das Paket PEAR selbst noch mit einzubinden, was Sie mit require_once('PEAR.php'); machen können. Das ist manchmal erforderlich, um eine Fehlerüberprüfung vornehmen zu können.

Die meisten Pakete setzen voraus, dass Sie ein neues Objekt ableiten. Teilweise wird auch nur mit statischen Methodenaufrufen gearbeitet, was Sie den jeweiligen Erläuterungen aber entnehmen können.


Rheinwerk Computing

1.3.5 Fehlerbehandlung  downtop

PEAR-Pakete sollten alle eine vereinheitlichte Fehlerbehandlung nutzen. Und zwar ist eine Klasse namens PEAR_Error im PEAR-Framework definiert. Eine Methode, die einen Fehler feststellt, sollte ein solches Objekt zurückgeben. Um zu überprüfen, ob ein Fehler aufgetreten ist, können Sie die statische Methode isError() nutzen.

// Ableiten des Objekts $db 
$res = $db->query('SELECT * FROM daten'); 
if (true == PEAR::isError($res)) 
{ 
   die ($res->getMessage()); 
}

Diese Variante, die ich in den meisten Fällen auch hier im Buch nutze, ist allerdings wenig elegant. Mit getMessage() wird die Fehlermeldung ausgelesen, und die Funktion die() beendet das Programm sofort.

Das ist nicht in allen Fällen sinnvoll. Teilweise kann es sich ja um einen Fehler handeln, der korrigierbar ist. Wenn Sie beispielsweise in eine Datei schreiben wollen und die Datei bereits existiert, aber nicht die korrekten Rechte hat, wäre das eventuell korrigierbar. Ein anderes Beispiel wäre, dass Daten von einem Server gelesen werden sollen, der gerade nicht verfügbar ist, so dass Sie vielleicht auf eine ältere Kopie der Daten zugreifen können, die noch lokal gespeichert ist.

In so einem Fall ist es möglich, einen Fehlercode mit der Methode getCode() auszulesen und in Abhängigkeit von dem Code zu reagieren. Zum Vergleich mit diesen Codes sind in den Paketen Konstanten definiert, die Sie zum Beispiel als Vergleichswerte in einem switch() nutzen können.

// Ableiten des Objekts $db 
$res = $db->query('SELECT * FROM daten'); 
if (true == PEAR::isError($res)) 
{ 
   switch ($db->getCode()) 
   { 
      case PEAR_DB_DB_NOT_FOUND: 
                         die ("Datenbank fehlt"); 
      case PEAR_DB_TABLE_MISSING: 
                         tabelle_anlegen(); 
                         break; 
      default: die ('Nicht behandelter Fehler: '. 
                                   $db->getMessage()); 
   } 
}

Um die Entwicklung zu vereinfachen, können Sie das globale Verhalten beim Auftreten eines Fehlers beeinflussen. Üblicherweise wird ein PEAR_Error-Objekt zurückgegeben. Das resultiert daraus, dass der Modus PEAR_ERROR_RETURN genutzt wird. Allerdings können Sie auch die Modi PEAR_ERROR_PRINT oder PEAR_ERROR_DIE nutzen. Der erste dieser beiden Modi sorgt dafür, dass die Fehlermeldung direkt ausgegeben wird und das Programm weiterläuft. Zusätzlich wird allerdings immer noch ein Error-Objekt zurückgegeben. Der andere Modus steht dafür, dass das Programm automatisch mit einem die() beendet wird, wenn ein Fehler auftritt. Diese verschiedenen Modi können Sie zum Beispiel nutzen, wenn Sie mit verschiedenen Debug-Leveln arbeiten wollen.

switch (DEBUB_LEVEL) 
{ 
   case 0 : PEAR::setErrorHandling(PEAR_ERROR_RETURN); 
            break; 
   case 1 : PEAR::setErrorHandling(PEAR_ERROR_PRINT); 
            break; 
   case 2 : PEAR::setErrorHandling(PEAR_ERROR_DIE); 
            break; 
   default : die ('ung&uuml;ltiger Modus'); 
}

Bei der Beschreibung der Pakete bin ich jeweils auf den Modus eingegangen, der voreingestellt ist. Natürlich können Sie ihn jederzeit überschreiben.

Die vorgenannten Möglichkeiten sind einfach zu handhaben und in den meisten Fällen absolut ausreichend. Allerdings können Sie auch noch flexibler arbeiten. Mit dem Modus PEAR_ERROR_TRIGGER wird die PHP-Funktion trigger_error() aufgerufen. Diese erwartet allerdings noch die Information, um welche Art von Fehler es sich handelt. Somit müssen Sie der Methode setErrorHandling() eine der Konstanten E_USER_NOTICE, E_USER_WARNING oder E_USER_ERROR als Parameter übergeben. Zusätzlich zu dem Aufruf von trigger_error() wird aber noch ein PEAR_Error-Objekt zurückgegeben.

Noch ein wenig mehr Flexibilität gibt Ihnen der Modus PEAR_ERROR_CALLBACK. Hiermit können Sie eine Callback-Funktion definieren, die aufgerufen wird, wenn ein Fehler auftritt. Der Name der Callback-Funktion wird als zweiter Parameter übergeben. Die Funktion selbst muss einen Parameter akzeptieren, über den das PEAR_Error-Objekt an die Funktion übergeben wird.

function eh ($error) 
{ 
   echo "Fehlercode: ".$error->getCode(); 
   echo "<br />Fehlermeldung: ".$error->getMessage(); 
} 
 
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK,'eh');

Ein weiterer Modus ist PEAR_ERROR_EXCEPTION, der allerdings nicht mehr genutzt werden soll. Nichtsdestotrotz gibt es einige Pakete, die mit Ausnahmen arbeiten, wie sie ab PHP 5 definiert sind. In solch einem Fall könnte die Fehlerbehandlung so aussehen:

try 
{ 
   $db = DB::connect($dsn); 
   // weitere Zeilen 
} 
catch (Exception $error) 
{ 
   echo "Fehlercode: ".$error->getCode(); 
   echo "<br /> Fehlermeldung: ".$error->getMessage(); 
}

Innerhalb des try-Blocks sind alle Zeilen zu finden, die darauf getestet werden sollen, ob sie einen Fehler verursachen. Ist das der Fall, so wird die Verarbeitung abgebrochen und in den catch-Block gesprungen, der das Error-Objekt zur Verarbeitung übergeben bekommt. Das ist nur eine recht kurze Darstellung dessen, was try und catch leisten können. Weitere Informationen hierzu finden Sie im PHP-Manual.

Für umfangreiche Applikationen ist im PEAR-Framework auch vorgesehen, dass die Fehler auf einem Stapel (Stack) abgelegt werden können. In den Paketen wird diese Vorgehensweise momentan allerdings nur in einem Fall genutzt. Informationen dazu finden Sie in der API-Dokumentation des PEAR-Pakets unter http://pear.php.net/pear.


Rheinwerk Computing

1.3.6 Unterstützung  downtop

Haben Sie sich dafür entschieden, ein Paket zu nutzen, stellt sich immer die Frage, was Sie machen können, wenn Sie ein Problem bei der Anwendung haben. An erster Stelle möchte ich Sie hier auf die Website http://www.pear- center.de verweisen, auf der Sie ein Forum finden, das als Support-Forum zu diesem Buch gedacht ist. Ich hoffe, dass Leser dieses Buchs sich hier auch gegenseitig helfen.

Sollten Sie schnell eine Problemlösung benötigen, kann es sein, dass ein Forum nicht das ideale Medium ist. Mailinglisten stellen hier sicher eine gute Alternative dar.

Als Mailinglisten würde ich Ihnen an erster Stelle die deutschsprachigen PHP- und PEAR-Mailinglisten empfehlen, die Sie über die Website http:// www.phpbar.de im Bereich Interaktiv abonnieren können.

Eine sehr gute Alternative, die allerdings englischsprachig ist, stellen die Listen dar, die Sie auf der PEAR-Website im Bereich Support unter dem Menüpunkt Mailing Lists abonnieren können. Der Vorteil dieser Listen besteht darin, dass Sie ein weltweites Publikum erreichen, und vor allem lesen hier auch viele der PEAR-Entwickler mit, so dass Sie auf schnelle, qualifizierte Hilfe hoffen können. Nutzen Sie PEAR öfter, kann ich Ihnen empfehlen, auch die anderen PEAR-Listen zu abonnieren. Zwar verursachen diese viel Traffic, aber Sie sind über alles, was im PEAR-Projekt passiert, auf dem Laufenden und können ein wenig »hinter die Kulissen schauen«.

Die vielleicht schnellste Möglichkeit, an Unterstützung zu kommen, ist der Internet Relay Chat. Im IRC-Netz EFnet finden Sie einen Channel namens pear, in dem viele der PEAR-Entwickler ständig vertreten sind (es sei denn, sie schlafen mal).


Rheinwerk Computing

1.3.7 Bugs  toptop

Es kann immer einmal passieren, dass Sie einen neuen Fehler in einem der PEAR-Projekte entdecken. Grundsätzlich gilt hierbei, dass Sie natürlich zuerst die oben genannten Möglichkeiten nutzen sollten, um zu klären, ob der Fehler eventuell bei Ihnen liegt oder ob es sich wirklich um einen Fehler im Paket handelt.

Ist das der Fall, erstellen Sie bitte einen Bug-Report. Ein Projekt wie PEAR kann nur besser werden, wenn alle, die damit arbeiten wollen, auch mithelfen. Und selbst, wenn Sie das Problem in Ihrer Anwendung umschiffen können oder Sie den Fehler finden und eliminieren können, erstellen Sie bitte einen Bug-Report, damit der Entwickler eine Chance hat, den Fehler zu korrigieren, und alle davon profitieren können.

Klicken Sie auf der PEAR-Homepage des Paketes auf den Menüpunkt Bugs. Im nachfolgenden Bildschirm finden Sie den Menüpunkt Report new bug, den Sie bitte anwählen.

Auf der nächsten Seite füllen Sie in dem Formular die erforderlichen Felder aus. Vergessen Sie hierbei nicht das Feld Reproduce code, in das Sie das Code-Fragment eingeben, das den Fehler reproduzierbar erzeugt. Bitte seien Sie hier nicht zu sparsam. Kopieren Sie nicht nur die Zeile, die den Fehler verursacht, sondern ein komplettes Script oder zumindest die Zeilen, die im direkten Zusammenhang mit dem PEAR-Aufruf stehen.

Des Weiteren sollten Sie bei der Erstellung des Bug Reports eine E-Mail-Adresse angeben, unter der Sie auch wirklich erreichbar sind. Das hat den Vorteil, dass Sie bei Rückfragen erreichbar sind, aber vor allem bekommen Sie auch automatisch eine E-Mail zugesandt, wenn sich der Status des Bugs ändert.

In einigen Fällen wird es Ihnen dann passieren, dass Sie eine schnelle Antwort bekommen, die ungefähr so lautet: this is already fixed in CVS. Damit möchte der Entwickler Ihnen mitteilen, dass das Problem bekannt ist und bereits bereinigt wurde. Allerdings wurde noch keine neue Version veröffentlicht, so dass der Bugfix nur in den Dateien enthalten ist, die im CVS-Baum zu finden sind.

Zugriff auf den CVS-Baum erhalten Sie über den Menüpunkt Browse the source tree, den Sie auf der Homepage des Pakets finden. Nach einem Klick auf den Link landen Sie in einer Oberfläche, in der Sie sich die Datei heraussuchen können, die fehlerhaft ist. Haben Sie sie gefunden, können Sie diese manuell herunterladen und die bestehende Datei auf Ihrem Server ersetzen.

 <<   zurück
     
  Zum Katalog
Zum Katalog: PHP PEAR
PHP PEAR
Jetzt bestellen!
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: PHP 5.6 und MySQL 5.7






 PHP 5.6 und
 MySQL 5.7


Zum Katalog: Einstieg in PHP 5.6 und MySQL 5.6






 Einstieg in PHP 5.6
 und MySQL 5.6


Zum Katalog: Responsive Webdesign






 Responsive Webdesign


Zum Katalog: Moderne Websites entwickeln






 Moderne Websites
 entwickeln


Zum Katalog: MySQL 5.6






 MySQL 5.6


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de