query-monitor
query-monitor copied to clipboard
Call previous error handler at end of `QM_Collector_PHP_Errors::error_handler()`
We have an MU plugin to mute deprecation warnings. With Query Monitor active, its error handler is never run.
The common pattern is to save the return value of set_error_handler() to an instance variable, as you have done with $previous_error_handler, and then to call it at the end of the new error handler, if it exists. I have added the latter part.
https://www.php.net/manual/en/function.set-error-handler.php#123459
Thanks for the PR! I'll need to investigate the wider impact of this change.
I think I need to move the call to the previous error handler to before the filter so it is always run. Currently the filter could short-circuit and return true without calling it. E.g. here is an error handler which logs the error if it's relevant to the plugin, I don't think it's Query Monitor's place to decide not run this code: bh-wp-logger
I'm having trouble spinning up the test environment (although I obviously had it running already). I'll try again soon.