PHP:bool与boolean类型暗示
我一直在尝试在PHP中更多地使用类型暗示。今天我在写一个函数,它接受一个带有默认参数的布尔值,我注意到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_
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)