我通过字符串"foo"的值传递了一个参数,但没有生成错误,但我知道如果我声明一个布尔值,我只能传递布尔值,否则它将在php 7中抛出TypeError Exception。
在这里我给出了我的示例代码
function my_fnc(bool $val){
echo $val;
}
my_fnc("hellow");
当我执行时,没有错误。为什么?
我知道strict_types但是在这种类型(弱类型(中,为什么我没有收到错误,它是如何工作的?
它之所以有效,是因为您尚未声明应启用strict_types。程序中的第一行需要declare(strict_types=1);
强制实施严格类型。如果按如下所示更改示例,将按预期抛出错误。
declare(strict_types=1);
function my_fnc(bool $val){
echo $val;
}
my_fnc("hellow");
致命错误:未捕获的类型错误:传递给 my_fnc(( 的参数 1 必须是 布尔类型,给定字符串