首页 >后端开发 >php教程 >如何在 PHP 中正确初始化复杂的静态变量?

如何在 PHP 中正确初始化复杂的静态变量?

Barbara Streisand
Barbara Streisand原创
2024-11-27 17:44:11780浏览

How Can I Properly Initialize Complex Static Variables in PHP?

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

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