Ich schreibe zur Zeit an einer Klasse für die Handhabung von Fehler und Exceptions. Nun ergibts sich folgendes Problem. Im Konstruktor wird die Klasse über set_error_handler und set_exception_handler eingebunden:
Der Error Handler funktioniert soweit, bei dem Exceptionhandler ensteht aber beim definieren folgender Fehler:
die Funktion dazu sieht in etwas so aus:
Wenn ich die Methode auskommentiere tritt der Fehler nicht mehr auf. Irgendwie verwirrt mich das etwas. Kann mir jemand sagen wie man den Fehler beheben kann?
PHP-Code:
public function __construct ( ) {
set_error_handler ( array ( &$this, 'handleError' ) );
set_exception_handler ( array ( &$this, 'handleException' ) );
}
Code:
set_exception_handler() expects the argument (Error::handleException) to be a valid callback
PHP-Code:
public function handleException ( Exception $exception ) {
$this -> _writeLog ( ... );
$this -> _displayMessage ( ... );
return true;
}
EDIT:
zur Korektur: der Fehler tritt auf wenn die Funktion auskommentiert ist, das Problem ist mehr, dass nichts mehr ausgegeben wird wenn die Funktion definiert wird, obwohl ich nirgendwo eine Exception erzeuge ... die Ausgabe fehlt auch wenn die Funktion nur definiert ist aber garnicht als Exception Handler deklariert wurde.
EDIT:
Ich bin noch etwas weiter: Der unten gepostete Teil der Funktion scheint die fehlende Ausgabe zu verursachen, allerdings macht er das nur in der Funktion handleException (und komischerweise auch wenn die Funktion nirgendwo aufgerufen wird.
PHP-Code:
$this -> _writeLog ( array ( 'type' => 'Exception',
'time' => time ( ),
'file' => ( !empty ( $exception -> getFile ( ) ) ) ? $line : false,
'line' => ( !empty ( $exception -> getLine ( ) ) ) ? $line : false,
'message' => $exception -> getMessage ( ),
'lines' => $this -> _getAffectingLines ( $exception -> getFile, $exception -> getLine ( ) ) ) );
EDIT:
in dem letzten Statement hatten sich einige Fehler eingeschlichen die nun beseitigt sind ... es funktioniert wieder - kann mir allerdings nicht erklären warum ohne Fehler einfach so die Ausgabe geschluckt wird.