Seitenhierarchie
Zum Ende der Metadaten springen
Zum Anfang der Metadaten

 

Zusammenfassung

PHP Fehler beenden oft das Script und lassen sich nicht so einfach abfangen. Die Klasse \Alvine\Util\Error\PHPHandler springt hier ein und kapselt den Aufruf.

 


Beschreibung

Das Fehlersystem in PHP lässt sich über die php.ini oder direkt im Code steuern. Über Variablen wie display_errors oder error_reporting kann die Ausgabe der Fehlermeldungen gesteuert werden. In Produktionsumgebungen, sollten die Fehlermeldungen ausschließlich in Logdateien und nicht am Bildschirm angezeigt werden. Die Konstanten für die Einstellungen des error_reportings können auf dieser Seite nachgelesen werden: http://php.net/manual/de/errorfunc.constants.php

Mit Hilfe der Klasse \Alvine\Util\Error\PHPHandler lassen sich PHP-Funktionsaufrufe die einen Fehler schmeissen kapseln und so in Exception umwandeln.

\Alvine\Util\Error\PHPHandler::execute('\Alvine\Core\FrameworkException', function() use(&$paramRef, $param) {    @<phpfunktion>();});

In dem folgenden Beispiel wird die fopen Funktion gekapselt.

/** * Datei öffnen * * @param \string $filename Dateiname * @return \resource file */function openMyFile($filename) {    $fp = null;    /**     * Tritt beim öffnen der Datei ein Fehler auf wird statt eines PHP-Fehlers     * die Exception Alvine\IO\File\NotFoundException geworfen. Die Ausführung     * erfolgt in einem Closure. Aus diesem Grund müssen benutze Variablen per      * use an den Inhalt übergeben werden.     * Die Variable $f soll als Rückgabe dienen. Aus diesem Grund wird eine      * Referenz &$fp übergeben.     */    \Alvine\Util\Error\PHPHandler::execute('\Alvine\IO\File\NotFoundException', function() use(&$fp, $filename) {        $fp = @fopen($filename,'r');    });    return $fp;}try {    openMyFile('myfile.txt');} catch(Exception $e) {    echo 'Exception: '.$e->getMessage();}

Die geworfene Exception erlaubt es nun die PHP-Error-Meldung auszugeben.

Exception: E_WARNING. Error message was "fopen(myfile.txt): failed to open stream: No such file or directory"

 

 


Ressourcen

 


Feedback

Waren diese Informationen hilfreich?

 


Historie

Version Datum Kommentar
Aktuelle Version (v. 1) 02.Jan.2017 10:43 Volker Schukai

 

\Alvine\Util\Error\PHPHandler::execute('\Alvine\Core\FrameworkException'function() use(&$paramRef$param) {
    @<phpfunktion>();
});
Schreiben Sie einen Kommentar...