Mittels Class werden im letzten Beispiel eine selbstdefinierte Exception-Klasse von der in PHP vordefinierten abgeleitet. Darüber hinaus wird eine Klasse implementiert, die den Anfang zu einer Klasse zur Verarbeitung von Brüchen darstellt – lediglich der Construktor zu Initialisierung und eine Methode zur automatischen String-Konvertierung wird hier umgesetzt. Weiter unten werden die zuvor implementierten Klassen instanziiert und entsprechend genutzt. Dabei werden Beispielhaft einige Brüche initialisiert, die mit gültigen – aber auch mit ungültigen Werten – gefüttert werden. Um Auftretende Fehler abzufangen werden die Konstruktoren innerhalb eines Try-Catch-Abschnitts verarbeitet.
<?php // Konstante für die Fehlernummer (Error-Code) // Ist Hilfreich, wenn die Exception innerhalb des PHP-Code identifiziert werden muss define (DIV_ERROR, 1); // Individuelle Exception durch Ableitung der vordefinierten Klasse implementieren class DivisionDurchNullException extends Exception { // Default-Constructor mit Vorgaben zur Fehlermeldung und zum Fehlercode // Werden bei der Instanzierung der Exception keine Parameter angegeben, // so sind diese Werte bereits vorgegeben. public function __construct ($message = 'Division durch Null!', $code = DIV_ERROR) { parent :: __construct ($message, $code); } } // Als Beispiel dient folgender Ansatz zur Definition einer Klasse zum Verarbeiten von Brüchen class bruch { // Variablen (Eigenschaften) zur Speicherung von Zähler und Nenner private $zaehler; private $nenner; // Der Constructor der Klasse Bruch initialisiert eine Instanz public function __construct ($zaehler, $nenner = 1) { // Schon bei der Initialisierung des Bruchs kann der Fehler auftreten // Aus diesem Grunde muss eine Exception geworfen werden, wenn der // Parameter zur Angabe des Nenners den Wert 0 enthält. if ($nenner == 0) // Werfen der Exception mit eine individuellen Fehlermeldung // Der Fehlercode wird mit dem Default-Wert belegt. throw new DivisionDurchNullException ('Nenner ist Null!'); // Wenn alles in Ordung ist, können Zähler und Nenner den Variablen // der Instanz zugewiesen werden. $this->zaehler = $zaehler; $this->nenner = $nenner; } // Methode zur Konvertierung des Bruchs in ein String // Wird zur Ausgabe benötigt und automatisch aufgerufen, wenn die // Instanz mit echo ausgegeben wird. public function __toString () { return $this->zaehler . ' / ' . $this->nenner; } } // Exception-Block zum Abfangen von Fehlern bei der Initialisierung von // Instanzen der Klasse bruch. try { // Durch Default-Parameter 5/1 ist OK! $f = new bruch (5); echo $f . '<br>'; // Auch 1/2 ist gültig $f = new bruch (1, 2); echo $f . '<br>'; // Ohne den Try-Catch-Block wäre hier Schluß und das Script // würde mit einem Fehler abgebrochen $f = new bruch (1, 0); // Aufgrund der Exception wird die folgende Ausgabe nicht erreicht. // Statt dessen wird das Script in den Catch-Block eintreten und nach // diesem Block mit den darauf folgenden Anweisungen fortfahren. echo $f . '<br>'; } catch (DivisionDurchNullException $e) { // Exception ist aufgetreten und eine entsprechende Fehlermeldung // samt Trace-String wird ausgegeben. echo 'Fehler: ' . $e->getMessage () . '<br>' . $e->getTraceAsString (); } ?>
5 / 1
1 / 2
Fehler: Nenner ist Null!
#0 /srv/www/htdocs/_PHPTEST.php(188): bruch->__construct(1, 0)
¬ Menu
¬ Gratis Download
¬ Tutorials
¬ Seminare
¬ Yoga
¬ Insolvenzrecht
¬ News
15.08.2008Schleifen in PHP: Die While-Schleife » mehr 13.08.2008Nutzung von Variablen unter PHP: Definition, Sichtbarkeit und vordefinierte Variablen » mehr 11.08.2008Ausgabe von Datum und Zeit mit PHP nach Konvertierung in ein String » mehr Eine vollständige News-Liste ist auf der News-Seite zugänglich.
¬ Foren
¬ Buchtipp
AJAX und PHP
Weitere PHP Bücher finden Sie unter PHP Literatur