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