我刚刚调试了一些 PHP 7.1 代码,我忘记删除(bool)
返回值的强制转换,但该函数声明的返回类型为int
:
function get_foo(): int {
$val = get_option('foo');
return (bool) $val;
}
$foo = get_foo();
当然,在bool
and之间很容易转换,但是为什么不抛出TypeError呢?int
在三种情况下可能会抛出 TypeError。...第二个是从函数返回的值与声明的函数返回类型不匹配的地方。
类型化的函数参数表现出相同的行为。
function get_foo(string $foo): int {
$val = get_option($foo);
return (bool) $val;
}
// no TypeError!
$foo = get_foo(34);