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

Posted

技术标签:

【中文标题】传递给 Y 的参数 X 必须是布尔值的实例,给定的布尔值 - PHP7【英文标题】:Argument X passed to Y must be an instance of boolean, boolean given - PHP7 【发布时间】:2018-01-03 01:30:38 【问题描述】:

给定代码

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

a(true);

我收到错误

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

这是怎么回事?

【问题讨论】:

【参考方案1】:

boolean 的唯一有效类型提示是 bool。根据documentation boolean 在类型提示中不被识别为bool 的别名。相反,它被视为类名。 int(scalar) 和 integer(class name) 也一样,会报错

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

在这种特定情况下,需要 boolean 类的对象,但传递了 true(bool, scalar)。

有效代码是

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

a(true);

结果是什么

布尔(真)

【讨论】:

以上是关于传递给 Y 的参数 X 必须是布尔值的实例,给定的布尔值 - PHP7的主要内容,如果未能解决你的问题,请参考以下文章

传递给验证器()的 Laravel 参数 1 必须是 Illuminate\Http\Request 的实例,给定数组

传递给方法的 Laravel 错误参数 1 必须是 App\Model 的实例,给定的 Illuminate\Database\Eloquent\Collection 的实例

传递给 myFunction() 的参数 1 必须是字符串的实例,给定的字符串,调用

传递给 App\Http\Controllers\HomeController::productDetail() 的参数 2 必须是 App\Product 的实例,给定字符串

函数名传递与名称空间

VB 参数传递:按值传递和按地址传递