Trails betreibt sein Errorhandling in unzureichender Weise
Trails definiert einen eigenen Errorhandler mit einem festen Wert von 5888
für die Levels, auf die der Handler horchen soll. Das klappt hinreichend gut, wenn man nicht einen eigenen Errorhandler dazwischen schalten möchte.
Beispiel dafür:
$old_handler = set_error_handler(function ($errno, $errstr, $errfile, $errline, $errcontext = null) use ($old_handler) {
if (!(error_reporting() & $errno)) {
return false;
}
// Do something
$old_handler($errno, $errstr, $errfile, $errline, $errcontext);
});
In diesem Fall, wo der Fehler nicht weiter behandelt wird sondern an der vorher definierten Handler weitergeben werden soll, wird Trails jede Art von Fehlern, die den Error Handler triggert, als Trails_Exception
mit dem Status 500
verwerten.
Das ist zugegebenerweise ein Edge-Case ganz am Rande des Notwendigen, aber ich finde keine andere Lösung, um irgendwie an den definierten Wert zu kommen und ich finde es einfach nicht. Ich befürchte, es geht auch einfach nicht, weil das Interna sind, für die PHP keine Schnittstelle bietet.
Daher sollte der Errorhandler in Trails selbst nochmal prüfen, ob der Fehler für ihn überhaupt relevant ist. Die Änderung dafür ist trivial und man müsste error_reporting()
in meinem Beispielcode nur durch den fest verdrahteten Wert ersetzen und die entsprechenden drei Zeilen in den Errorhandler von Trails übernehmen.