首頁 >後端開發 >php教程 >如何在 PHP 中正確初始化複雜的靜態變數?

如何在 PHP 中正確初始化複雜的靜態變數?

Barbara Streisand
Barbara Streisand原創
2024-11-27 17:44:11775瀏覽

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
);

解決方法:

一種解決方案是避免在初始化程序中使用複雜的表達式,而是在定義類別後分配值:

class Foo {
  static $bar;
}
Foo::$bar = array(…);

另一個選擇是使用靜態函數來初始化變數:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn