函数参数“array”,“string”和“boolean”如何在PHP中工作?

时间:2017-09-26 07:17:46

标签: php function parameters boolean parameter-passing

我正在创建一个只接受布尔值作为参数的程序。我以为我可以instanceof这样做,但它没有按照我的预期工作。

function test (boolean $param) {
    echo $param;
}
test(true);

当我在我的程序中使用它时,我收到以下错误消息:

  

传递给test()的参数1必须是boolean

的实例

instanceof是正确的方法吗?它是如何运作的?

2 个答案:

答案 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)检查是否提供了布尔参数,然后返回falsenull或者抛出异常,并以这种方式处理它。如果您认为合适,也可以发出用户警告(trigger_error())。

答案 1 :(得分:0)

根据文档,您会发现,根据PHP版本,可用选项会发生变化:type-declaration

如果您使用的是PHP 7.0,则应使用bool,类型声明中不支持标量类型的别名,它们将被解释为类或接口名称。

如果您使用的是PHP 5.0 - PHP 5.6,您应该使用定义需要提示的参数类型的对象,您将找到有关类型提示的更多信息here