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

问题描述 投票:0回答:1

我按值传递一个论点,即字符串“foo”,没有产生错误,但我知道,如果我宣布一个布尔值,我只能通过布尔值,否则会抛出在PHP 7 TypeError异常。

在这里,我给我的例子代码

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

my_fnc("hellow");

当我执行没有错误。为什么?

我知道strict_types但在这种类型(弱类型)为什么我没有得到一个错误,它是怎样工作的?

php casting type-declaration
1个回答
0
投票

它的工作原理是因为你还没有宣布strict_types应该启用。在你的程序中的第一行必须declare(strict_types=1);执行严格的类型。如果您更改为显示你的下面的例子,你会得到如预期所引发的错误。

declare(strict_types=1);
function my_fnc(bool $val){
       echo $val;
      }

my_fnc("hellow");

致命错误:未捕获的类型错误:传递给my_fnc参数1()必须是bool类型的,给定的字符串

© www.soinside.com 2019 - 2024. All rights reserved.