对于定义为
的接口中的方法,获取错误“具有类类型提示的参数的默认值只能为NULL ”是否正常public function nullify(bool $force=FALSE);
我需要它是bool,而不是对象,默认为FALSE。
答案 0 :(得分:10)
在php(尚未)中没有类型提示布尔参数。您只能指定班级名称或array
。
因此function foo(bool $b)
表示:“参数$ b必须是类'bool'的实例或null”。
http://docs.php.net/language.oop5.typehinting:
函数现在能够强制参数为对象(通过在函数原型中指定类的名称)或数组(从PHP 5.1开始)。
答案 1 :(得分:5)
如前所述,类型提示仅适用于数组和对象。您的功能可以这样写:
public function nullify($force=FALSE){
$force=(bool)$force;
//further stuff
}
答案 2 :(得分:3)
PHP 5类型提示仅限于特定类(或其子类之一)或数组。您不能指定任何其他标量类型。
答案 3 :(得分:1)
您不能强制参数为布尔值。
在language.oop5.typehinting中找到:
PHP 5引入了类型提示。函数现在能够强制参数为对象,接口,数组(自PHP 5.1起)或可调用(自PHP 5.4起)。
[...]
类型提示不能与标量类型一起使用,例如int或string。 [...]
如language.types.intro中所见,PHP标量类型为:
- boolean - integer - float (floating-point number, aka double) - string
答案 4 :(得分:0)
你可以尝试:
public function nullify($force){
if(is_object($force)) $force = false;
...
}
在升级PHP之前,请将其视为临时解决方案。