Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:bool与boolean类型暗示_Php_Boolean_Default Value_Type Hinting - Fatal编程技术网

PHP:bool与boolean类型暗示

PHP:bool与boolean类型暗示,php,boolean,default-value,type-hinting,Php,Boolean,Default Value,Type Hinting,我一直在尝试在PHP中更多地使用类型暗示。今天我在写一个函数,它接受一个带有默认参数的布尔值,我注意到 function foo(boolean $bar = false) { var_dump($bar); } 实际上抛出了一个致命错误: 带有类类型提示的参数的默认值只能为NULL 而类似形式的函数 function foo(bool $bar = false) { var_dump($bar); } 没有。然而,两者 var_dump((bool) $bar); var_

我一直在尝试在PHP中更多地使用类型暗示。今天我在写一个函数,它接受一个带有默认参数的布尔值,我注意到

function foo(boolean $bar = false) {
    var_dump($bar);
}
实际上抛出了一个致命错误:

带有类类型提示的参数的默认值只能为NULL

而类似形式的函数

function foo(bool $bar = false) {
    var_dump($bar);
}
没有。然而,两者

var_dump((bool) $bar);
var_dump((boolean) $bar);
给出完全相同的输出

:布尔值假

为什么会这样?这与Java中的包装类类似吗?

警告
不支持上述标量类型的别名。相反,它们被视为类或接口名称。例如,使用boolean作为参数或返回类型将要求参数或返回值是类或接口boolean的实例,而不是bool类型:

<?php
function test(boolean $param) {}
test(true);
?>

在php类型转换中,(bool)和(boolean)都是相同的。

检查使用
bool
时支持的有效类型是否有类型提示。
类型提示和类型转换之间没有相似性
——标量类型提示(参数和返回类型)会执行类型转换。换句话说:
(函数():bool{return 1;})(==true
(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(array) - cast to array
(object) - cast to object
(unset) - cast to NULL (PHP 5)