2

このような変数を持つクラスを作成するとうまくいきます:

class Example {
    public static $example = array('simple', 'example');
    // ... 
}

しかし、関数を使用すると、変数を定義するときにunexpected '(', expecting ')'エラーが発生します。

class Example {
    public static $example = explode(' ', 'simple example');
    // ... 
}

キーワードなしで試してみましたstaticが、それでも同じエラーが発生しました。そのようなクラス変数を定義するときに関数を使用することは可能ですか? 代替手段は何ですか?

4

3 に答える 3

4

ドキュメントによると(強調鉱山):

他の PHP 静的変数と同様に、静的プロパティはリテラルまたは定数を使用してのみ初期化できます。式は使用できません。したがって、静的プロパティを整数または配列 (たとえば) に初期化することはできますが、別の変数、関数の戻り値、またはオブジェクトに初期化することはできません。

于 2012-04-20T16:31:14.637 に答える
2

配列は実際には関数ではなく、演算子リテラルであるため、機能します。関数を使用するには、セッターまたはクラスの外部で行うだけです。

class Example {
    public static $example = null;
    // ... 

    public static function setE($val) {
       self::$example = $val;
    }
}

Example::$example = explode(' ', 'simple example');

// or

Example::setE(explode(' ', 'nudder example'));
于 2012-04-20T16:32:30.157 に答える
1

次のことができるはずです。

public static $example = new array('simple','example');

于 2012-04-20T16:31:21.390 に答える