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



我通过字符串"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 必须是 布尔类型,给定字符串

最新更新