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