11

わかりましたので、これはかなりばかげた質問のように思えますが、PHP は私がこれを行うことができない、または私の IDE ではないと言っています...

以下の例では、メソッドのデフォルト値として $this->somevar を使用できないことを示しています。

つまり...

class something {

public somevar = 'someval';

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

}



}
4

3 に答える 3

21

あなたのIDEは正しいと思います。これは、「デフォルト値は、(たとえば) 変数、クラス メンバー、または関数呼び出しではなく、定数式でなければならない」ためです。—関数の引数

次のようにする必要があります。

class something {

    public $somevar = 'someval';

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

これは、三項演算子を使用して記述することもできます。

$default = $default ?: $this->somevar;
于 2013-01-31T22:00:45.093 に答える
5

「[関数の引数の] デフォルト値は、(たとえば) 変数、クラス メンバー、または関数呼び出しではなく、定数式でなければなりません。」

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

于 2013-01-31T21:58:38.437 に答える