好的,所以这似乎是一个非常愚蠢的问题,但 PHP 告诉我我不能这样做,或者更确切地说是我的 IDE ......
在下面的示例中,它告诉我不能使用 $this->somevar 作为该方法的默认值。
IE...
class something {
public somevar = 'someval';
private function somefunc($default = $this->somevar) {
}
}
“[函数参数]的默认值必须是常量表达式,而不是(例如)变量、类成员或函数调用。”
在这种情况下,您可以使用我的小型库ValueResolver,例如:
class something {
public somevar = 'someval';
private function somefunc($default = null) {
$default = ValueResolver::resolve($default, $this->somevar); // returns $this->somevar value if $default is empty
}
}
并且不要忘记使用命名空间use LapaLabs\ValueResolver\Resolver\ValueResolver;
还有类型转换的能力,例如如果你的变量的值应该是integer
,所以使用这个:
$id = ValueResolver::toInteger('6 apples', 1); // returns 6
$id = ValueResolver::toInteger('There are no apples', 1); // returns 1 (used default value)
查看文档以获取更多示例