问题:
在 PHP 中初始化静态变量时遇到错误使用语法 private static $dates = array(...); 的代码。具体来说,您会收到与意外括号相关的“语法错误”。
答案:
在 PHP 中,不能在静态变量初始值设定项中直接使用复杂表达式。这里有两种方法可以解决这个限制:
方法一:使用类初始化代码
定义类后,添加以下代码:
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 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中文网其他相关文章!