Die PHP -Fehlerbehandlung kann etwas Kopfschmerzen haben. In der Regel verwendet eine Anwendung einen Systempegelfehlerhandler und/oder Unterdrückungsfehler mit dem @ -Präfix. Diese Fälle, in denen Ihr Code auf ausgelöste Fehler reagieren muss, sind jedoch schwieriger.
Diese Bibliothek bietet zwei Komfortmethoden, um Fehler in Codeblöcken zu verarbeiten, entweder durch das Werfen von Ausnahmen oder das Ausführen von Callback -Code, wenn ein Fehler auftritt.
Die aktuelle Version unterstützt Php ^7.2|^8.0 .
Mit Komponist installieren;
composer require phrity/util-errorhandler
Die Klasse bietet zwei Hauptmethoden; with() und withAll() . Der Unterschied besteht darin, dass with() sofort auf einen Fehler wirkt und eine weitere Codeausführung abbricht, während withAll() versucht wird, den gesamten Codeblock auszuführen, bevor auf Fehler auf Fehler handelt.
use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ result = $ handler -> with ( function () {
// Code to execute
return $ success_result ;
});
$ result = $ handler -> withAll ( function () {
// Code to execute
return $ success_result ;
});In den obigen Beispielen wird der Callback -Code ausgeführt. Wenn jedoch ein Fehler auftritt, wird eine Errorexception geworfen. Die Fehlermeldung und der Schweregrad sind die des Auslösungsfehlers.
with() wird sofort werfen, wenn er auftrittwithAll() wird werfen, wenn der Code vollständig ist; Wenn mehr als ein Fehler aufgetreten ist, wird der erste geworfen use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ result = $ handler -> with ( function () {
// Code to execute
return $ success_result ;
}, new RuntimeException ( ' A specified error ' ));
$ result = $ handler -> withAll ( function () {
// Code to execute
return $ success_result ;
}, new RuntimeException ( ' A specified error ' )); In den obigen Beispielen wird der Callback -Code ausgeführt, aber wenn ein Fehler auftritt, wird ertWortable erbracht. Das geworfene Throwable hat eine Errorexception als $previous .
with() wird sofort werfen, wenn er auftrittwithAll() wird werfen, wenn der Code vollständig ist; Wenn mehr als ein Fehler aufgetreten ist, wird der erste geworfen use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ result = $ handler -> with ( function () {
// Code to execute
return $ success_result ;
}, function ( ErrorException $ error ) {
// Code to handle error
return $ error_result ;
});
$ result = $ handler -> withAll ( function () {
// Code to execute
return $ success_result ;
}, function ( array $ errors , $ success_result ) {
// Code to handle errors
return $ error_result ;
});In den obigen Beispielen wird der Callback -Code ausgeführt. Wenn jedoch ein Fehler auftritt, wird auch der Fehlerrückruf aufgerufen.
with() führt den Fehlerrückruf sofort aus, wenn Fehler aufgetreten sind. Fehlerrückruf erwartet eine Errorexception -InstanzwithAll() wird der Fehlerrückruf ausgeführt, wenn der Code abgeschlossen ist. Fehlerrückruf erwartet eine Reihe von Errorexception und das zurückgegebene Ergebnis des Code -Rückrufs Sowohl with() als withAll() akzeptiert die Fehlerebene als letzter Parameter.
use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ result = $ handler -> with ( function () {
// Code to execute
return $ success_result ;
}, null , E_USER_ERROR );
$ result = $ handler -> withAll ( function () {
// Code to execute
return $ success_result ;
}, null , E_USER_ERROR & E_USER_WARNING ); Jeder Wert oder jede Kombination von Werten, die von set_error_handler akzeptiert werden, ist nutzbar. Standard ist E_ALL . Liste der Konstanten.
Die Klasse verfügt auch über globale Methoden set() und restore() .
use Phrity Util ErrorHandler ;
$ handler = new ErrorHandler ();
$ handler -> set (); // Throws ErrorException on error
$ handler -> set ( new RuntimeException ( ' A specified error ' )); // Throws provided Throwable on error
$ handler -> set ( function ( ErrorException $ error ) {
// Code to handle errors
return $ error_result ;
}); // Runs callback on error
$ handler -> restore (); // Restores error handler Phrity Util ErrorHandler {
/* Methods */
public __construct()
public with (callable $ callback , mixed $ handling = null , int $ levels = E_ALL ) : mixed
public withAll (callable $ callback , mixed $ handling = null , int $ levels = E_ALL ) : mixed
public set ( $ handling = null , int $ levels = E_ALL ) : mixed
public restore () : bool
}| Version | Php | |
|---|---|---|
1.1 | ^7.4|^8.0 | Einige Verbesserungen |
1.0 | ^7.2|^8.0 | Anfangsversion |