最近我正在检查 PHP 7,特别是返回类型声明和类型提示。我已经从源代码(Github的 master 分支)编译 PHP 7 并在 Ubuntu 14.04 虚拟机中运行它。我尝试运行以下代码来测试新的Exceptions。但它给出了一个空白页。
<?php
function test(): string {
return [];
}
echo test();
然后我意识到我必须设置要在屏幕上显示的错误。所以我在下面添加了老式的ini_set('display_errors', 1);
,
<?php
ini_set('display_errors', 1);
function test(): string {
return [];
}
echo test();
TypeError
根据this Throwable interface RFC ,这给了我预期的关注
致命错误:未捕获的类型错误:test() 的返回值必须是字符串类型,在 /usr/share/nginx/html/test.php 中的第 7 行中返回的数组 /usr/share/nginx/html/test.php :7 堆栈跟踪:#0 /usr/share/nginx/html/test.php(10): test() #1 {main} 在第 7 行的 /usr/share/nginx/html/test.php 中抛出
进一步挖掘我declare(strict_types=1);
在顶部添加如下,
<?php declare(strict_types=1);
ini_set('display_errors', 1);
function test(): string {
return [];
}
echo test();
砰,错误就消失了,给我留下了空白页。我不知道为什么它给了我一个空白页?