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