繁体   English   中英

PHP使用$ this-> variable作为类方法参数默认值

[英]PHP Using $this->variable as Class Method Parameter Default Value

好的,这似乎是一个非常愚蠢的问题,但PHP告诉我,我不能这样做,或者说我的IDE ...

在下面的例子中,它告诉我我不能使用$ this-> somevar作为方法的默认值。

即...

class something {

public somevar = 'someval';

private function somefunc($default = $this->somevar) {

}



}

我担心你的IDE是正确的。 这是因为“默认值必须是常量表达式,而不是(例如)变量, 类成员或函数调用。” - 函数参数

你需要做这样的事情:

class something {

    public $somevar = 'someval';

    private function somefunc($default = null) {
        if ($default === null) {
            $default = $this->somevar;
        }
    }
}

这也可以使用三元运算符编写:

$default = $default ?: $this->somevar;

“[函数参数]的默认值必须是常量表达式,而不是(例如)变量,类成员或函数调用。”

http://php.net/manual/en/functions.arguments.php

在这种情况下,您可以使用我的小库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)

查看文档以获取更多示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM