传递给Y的参数X必须是布尔值的实例,给定布尔值 - PHP7

时间:2017-07-27 10:54:46

标签: php types php-7 type-hinting

给定代码

<?php
function a(boolean $value){
    var_dump($value);
}
a(true);

我收到错误

  

TypeError:传递给a()的参数1必须是boolean的实例,boolean given

这里发生了什么?

1 个答案:

答案 0 :(得分:18)

只有boolean的有效类型提交为bool。根据{{​​3}} boolean,在类型提示中未被识别为bool的别名。相反,它被视为类名。 同样适用于int(标量)和integer(类名),这将导致错误

  

TypeError:传递给()的参数1必须是整数的实例,给定的整数

在这种特定情况下,期望类boolean的对象,但传递true(bool,标量)。

有效代码是

<?php
function a(bool $value){
    var_dump($value);
}
a(true);

结果是

  

BOOL(真)