ホームページ >バックエンド開発 >PHPチュートリアル >PHP で複雑な静的変数を適切に初期化するにはどうすればよいですか?
PHP での静的変数の初期化
PHP で静的変数を初期化するときに、イニシャライザ内の重要な式で構文エラーが発生する可能性があります。コードスニペットに見られるように以下:
private static $dates = array( 'start' => mktime( 0, 0, 0, 7, 30, 2009), // Start date 'end' => mktime( 0, 0, 0, 8, 2, 2009), // End date 'close' => mktime(23, 59, 59, 7, 20, 2009), // Date when registration closes 'early' => mktime( 0, 0, 0, 3, 19, 2009), // Date when early bird discount ends );
回避策:
1 つの解決策は、初期化子で複雑な式を避け、代わりにクラスを定義した後に値を割り当てることです:
class Foo { static $bar; } Foo::$bar = array(…);
もう 1 つのオプションは、静的関数を使用して変数:
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 サイトの他の関連記事を参照してください。