The following code works as expected: throws the ErrorException and calls the shutdown function for the fatal-error generated by require
register_shutdown_function(function() {
echo "anyway, hello world\n";
});
set_error_handler(function($severity, $message, $file, $line) {
throw new ErrorException($message, 0, $severity, $file, $line);
});
set_exception_handler(function($exception) {
echo $exception->getMessage().PHP_EOL;
});
require "unavailable_file";
Output:
require(unavailable_file): Failed to open stream: No such file or directory
anyway, hello world
But fatal error generated by named arguments fails to call the exception-handler and the shutdown function
// replacing require in the previous code with the following
function foo() {}
foo(...[], bar: "baz");
Output:
Fatal error: Cannot combine named arguments and argument unpacking
Combining all of them also is not working as expected and the ErrorException from require is not caught
// ...
require "unavailable_file";
function foo() {}
foo(...[], bar: "baz");
Output:
Fatal error: Cannot combine named arguments and argument unpacking
So is this another bug or am I missing something here?
PS: The PHP version is 8.0.0RC2 (cli)