我在函数(my_fnc)中的参数($ val)之前声明了布尔类型

时间:2019-02-04 17:55:49

标签: php casting type-declaration

我按值传递了一个字符串“ foo”,并且没有错误生成,但是我知道如果我声明了布尔值,则只能传递布尔值,否则它将在php 7中引发TypeError异常。

在这里我给出了示例代码

function my_fnc(bool $val){
       echo $val;
      }

my_fnc("hellow");

执行时没有错误。为什么?

我知道strict_types,但是在这种类型(弱类型)中,为什么我没有得到错误以及它如何工作?

1 个答案:

答案 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,给出字符串