我的脚本有以下代码:
set_error_handler(function(int $severity, string $message, string $filename, int $lineNumber) : void {
throw new ErrorException($message, 0, $severity, $filename, $lineNumber);
});
function test() : string {
return $test;
}
test();
在PHP 7.3.11(macOS 10.15.7(上运行该脚本可以正常工作,并显示以下内容:
致命错误:未捕获错误异常:未定义变量:中的测试…/index.php:9堆栈跟踪:
#0/index.php(9(:{closure}(8,"Undefined varia…","…",9,Array(
#1/index.php(12(:test((
#2{main}
Next TypeError:test((的返回值必须为字符串类型,在中返回null/index.php:9堆栈跟踪:
#0/index.php(12(:test((
#1{main}已抛出/第9行的index.php
但在PHP-8(php:8.0.0rc1-apache
docker图像(上,它被卡在循环中,什么也不显示。
通过移除set_error_handler
警告:中未定义的变量$test/第9行的index.php
致命错误:未捕获的TypeError:test((:返回值必须是字符串类型,在中返回null/index.php:9
堆栈跟踪:
#0/index.php(12(:test((
#1{main}扔进去/第9行的index.php
这是一个错误,还是在新版本中发生了更改?我在PHP CLI btw.上尝试过
正如评论中所指出的,这确实是一个错误,并已在第二个候选版本(PHP-8.0 RC2(中得到解决。