ホームページ >バックエンド開発 >PHPチュートリアル >PHP で複雑な静的変数を適切に初期化するにはどうすればよいですか?

PHP で複雑な静的変数を適切に初期化するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-27 17:44:11759ブラウズ

How Can I Properly Initialize Complex Static Variables in 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。