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

Bri*_*son 9 php variables default class

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

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

即...

class something {

public somevar = 'someval';

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

}



}
Run Code Online (Sandbox Code Playgroud)

cmb*_*ley 18

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

你需要做这样的事情:

class something {

    public $somevar = 'someval';

    private function somefunc($default = null) {
        if ($default === null) {
            $default = $this->somevar;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


bri*_*vis 5

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

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