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

mle*_*eko 10 php types type-hinting php-7

给定代码

<?php
function a(boolean $value){
    var_dump($value);
}
a(true);
Run Code Online (Sandbox Code Playgroud)

我收到错误

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

这里发生了什么?

mle*_*eko 21

只有有效的typehint booleanbool.根据文档 boolean,不会将其识别为booltypehints中的别名.相反,它被视为类名.同去的int(标量)和integer(类名),这将导致错误

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

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

有效代码是

<?php
function a(bool $value){
    var_dump($value);
}
a(true);
Run Code Online (Sandbox Code Playgroud)

结果是

布尔(真)