PHP 中靜態變數的初始化
PHP 在初始化靜態變數時遇到了挑戰,因為它無法在初始化器中計算非平凡的表達式。考慮以下程式碼:
private static $dates = array( 'start' => mktime( 0, 0, 0, 7, 30, 2009), 'end' => mktime( 0, 0, 0, 8, 2, 2009), 'close' => mktime(23, 59, 59, 7, 20, 2009), 'early' => mktime( 0, 0, 0, 3, 19, 2009), );
此程式碼會觸發解析錯誤,因為PHP 需要在賦值運算子後面有一個“)”,如以下錯誤訊息所示:
Parse error: syntax error, unexpected '(', expecting ')' in /home/user/Sites/site/registration/inc/registration.class.inc on line 19
To為了規避這個限制,我們可以採用替代方法:
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 中使用複雜表達式正確初始化靜態變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!