Optimize error handling
Opened this issue · 1 comments
Errors/warnings of functions which are suppressed with "@" (for example @array_keys_exist('test', new \stdClass())
in PHP 7.4) are not ignored by the error handling. In Respect\Rest\Request::prepareForErrorForwards()
all errors are collected and later forwarded to the error route. Problem is that the information if a error/warning was suppressed with "@" isn't present in the error route anymore. It only can be checked in the PHP error handler callback through error_reporting() === 0
. So this check needs to be done in Respect\Rest\Request::prepareForErrorForwards()
before adding a error to the error side route. Method would look like this:
protected function prepareForErrorForwards()
{
foreach ($this->route->sideRoutes as $sideRoute) {
if ($sideRoute instanceof Routes\Error) {
return set_error_handler(
function () use ($sideRoute) {
// Don't do anything if error_reporting is disabled by an @ sign
if (error_reporting() !== 0) {
$sideRoute->errors[] = func_get_args();
}
}
);
}
}
}
I can provide a pull request, too.
You are welcome to roll a PR, please/thank you.
Remember to add a unit test.