我按值传递了一个字符串“ foo”,并且没有错误生成,但是我知道如果我声明了布尔值,则只能传递布尔值,否则它将在php 7中引发TypeError异常。
在这里我给出了示例代码
function my_fnc(bool $val){
echo $val;
}
my_fnc("hellow");
执行时没有错误。为什么?
我知道strict_types,但是在这种类型(弱类型)中,为什么我没有得到错误以及它如何工作?
答案 0 :(得分:0)
之所以有效,是因为您尚未声明必须启用strict_types。程序中的第一行必须为declare(strict_types=1);
才能执行严格的类型。如果您按如下所示更改示例,则将按预期方式引发错误。
declare(strict_types=1);
function my_fnc(bool $val){
echo $val;
}
my_fnc("hellow");
致命错误:未捕获的TypeError:传递给my_fnc()的参数1必须为 类型bool,给出字符串