好的,这似乎是一个相当愚蠢的问题,但PHP告诉我我不能这样做,或者更确切地说是我的IDE...
在下面的例子中,它告诉我不能使用$this->somevar作为该方法的默认值。
也就是说...
class something {
public somevar = 'someval';
private function somefunc($default = $this->somevar) {
}
}
好的,这似乎是一个相当愚蠢的问题,但PHP告诉我我不能这样做,或者更确切地说是我的IDE...
在下面的例子中,它告诉我不能使用$this->somevar作为该方法的默认值。
也就是说...
class something {
public somevar = 'someval';
private function somefunc($default = $this->somevar) {
}
}
public somevar = 'someval';
缺少了 $,应该是 public $somevar = 'someval';
我只是复制并重新编辑,却因此浪费了约30秒钟,感到十分困惑。我在此发布,以防其他人也犯同样的错误! - BeNice在这种情况下,你可以使用我的小型库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)
请查看文档以获取更多示例
$default = $default ?: $this->somevar;
这样简单的操作呢? - harrygisset
函数。 - Victor Bocharsky