問題:
PHP で静的変数を初期化中にエラーが発生しましたprivate static $dates = array(...); という構文を使用したコード。具体的には、予期しない括弧に関連する「構文エラー」が発生します。
回答:
PHP では、複雑な式を静的変数初期化子で直接使用できません。この制限を回避する 2 つの方法を次に示します。
方法 1: クラス初期化コードを使用する
クラスを定義した後、次のコードを追加します。
class Foo { static $bar; } Foo::$bar = array(...);
方法 2: 静的初期化を使用するメソッド
静的初期化メソッドを定義し、手動で呼び出します:
class Foo { private static $bar; static function init() { self::$bar = array(...); } } Foo::init();
PHP 5.6 :
PHP 5.6 以降では、静的変数初期化子では、制限された式を使用できます。ただし、複雑な式の場合は、上記の方法が必要になる場合があります。抽象クラスの場合、次の構文を使用できます:
abstract class Foo{ private static function bar(){ static $bar = null; if ($bar == null) bar = array(...); return $bar; } /* use where necessary */ self::bar(); }
以上がPHP で静的変数を適切に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。