首页  >  文章  >  后端开发  >  如何在 PHP 中使用复杂表达式正确初始化静态变量?

如何在 PHP 中使用复杂表达式正确初始化静态变量?

Linda Hamilton
Linda Hamilton原创
2024-11-20 00:37:03819浏览

How Can I Properly Initialize Static Variables with Complex Expressions in PHP?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn