我正在创建一个只接受布尔值作为参数的程序。我以为我可以instanceof
这样做,但它没有按照我的预期工作。
function test (boolean $param) {
echo $param;
}
test(true);
当我在我的程序中使用它时,我收到以下错误消息:
传递给test()的参数1必须是boolean
的实例
instanceof
是正确的方法吗?它是如何运作的?
答案 0 :(得分:3)
根据manual on type-declarations,它声明在类型声明布尔值时需要使用bool
而不是boolean
。这也需要PHP-version 7.0.0或更高版本。
function test (bool $param) {}
test(true);
如果您的PHP版本低于7.0.0,则根本不能使用布尔类型声明。但是,您可以使用is_bool($param)
检查是否提供了布尔参数,然后返回false
,null
或者抛出异常,并以这种方式处理它。如果您认为合适,也可以发出用户警告(trigger_error()
)。
答案 1 :(得分:0)
根据文档,您会发现,根据PHP版本,可用选项会发生变化:type-declaration
如果您使用的是PHP 7.0,则应使用bool,类型声明中不支持标量类型的别名,它们将被解释为类或接口名称。
如果您使用的是PHP 5.0 - PHP 5.6,您应该使用定义需要提示的参数类型的对象,您将找到有关类型提示的更多信息here: