gpt4 book ai didi

php - 由命名参数和函数调用中的参数解包生成的错误在 PHP-8 中不抛出 ErrorException

转载 作者:行者123 更新时间:2023-12-02 18:17:28 25 4
gpt4 key购买 nike

以下代码按预期工作:抛出 ErrorException 并为 require 生成的 fatal error 调用关闭函数

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";
输出:

require(unavailable_file): Failed to open stream: No such file or directory

anyway, hello world


但是命名参数产生的 fatal error 无法调用异常处理程序和关闭函数
// replacing require in the previous code with the following

function foo() {}

foo(...[], bar: "baz");
输出:

Fatal error: Cannot combine named arguments and argument unpacking


将它们全部组合起来也无法按预期工作, ErrorException来自 require没有被捕获
// ... 

require "unavailable_file";

function foo() {}

foo(...[], bar: "baz");
输出:

Fatal error: Cannot combine named arguments and argument unpacking


那么这是另一个错误还是我在这里遗漏了什么?
PS: PHP 版本是 8.0.0RC2 (cli)

最佳答案

正如评论中所指出的,这确实是不同致命类型的 fatal error 的情况。
由于这属于“在执行脚本之前生成”的类别,不幸的是永远不会调用关闭函数。太糟糕了,我没有找到任何显示哪些 fatal error 属于此类别的信息。

关于php - 由命名参数和函数调用中的参数解包生成的错误在 PHP-8 中不抛出 ErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64438091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com