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 boolean是bool.根据文档 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)
结果是
布尔(真)