2012-04-20 3 views
2

は罰金の作品このような変数を持つクラスの作成:関数を使用してPHP静的クラス変数を定義できますか?

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

をしかし、私は関数を使用する場合は、変数を定義するとき、私はunexpected '(', expecting ')'エラーを取得する:

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

私はそれを試してみましたstaticキーワードがなくても、同じエラーが表示されます。そのようなクラス変数を定義するとき、関数を使うことは可能ですか?代替手段は何ですか? the documentation(強調鉱山)によると

+0

名前空間を作成し、その内部にグローバル変数を入れてください。まったく同じになります。そして、あなたは「OOPをやる」ふりをすることはありません。 –

答えて

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')); 
+0

この回答を選択すると、それを行う代わりの方法が付属しています。 Thx:] – ryanve

+0

悲しいことに、このように最後にすることはできませんが、関数を呼び出す場合は、とにかくあなたがその場で計算するものであることを望んでいません。 – Kato

4

Like any other PHP static variable, static properties may only be initialized using a literal or constant; expressions are not allowed. So while you may initialize a static property to an integer or array (for instance), you may not initialize it to another variable, to a function return value, or to an object.

1
あなたは次のことを行うことができるはず

のpublic static $例=新しい配列( 'シンプル'、 '例');

+0

したがって、OPでは "this ** ** fine ** works"と表示されます。 – mellamokb

関連する問題