PHP静态类变量可以使用函数定义吗?


Can PHP static class variables be defined using functions?

创建一个带有这样变量的类可以正常工作

class Example {
    public static $example = array('simple', 'example');
    // ... 
}

但是,如果我使用函数,在定义变量时,会出现unexpected '(', expecting ')'错误:

class Example {
    public static $example = explode(' ', 'simple example');
    // ... 
}

我在没有 static 关键字的情况下尝试过它,但仍然收到相同的错误。在定义这样的类变量时,是否可以使用函数?还有什么选择?

根据文档(强调我的):

像任何其他 PHP 静态变量一样,静态属性只能是 使用文本或常量初始化;不允许使用表达式。 因此,虽然您可以将静态属性初始化为整数或数组 (例如),您不能将其初始化为另一个变量,即 函数返回值,或返回对象。

数组实际上不是一个函数,而是一个运算符文字,这就是它工作的原因。要使用函数,只需使用setter或类外部即可:

class Example {
    public static $example = null;
    // ... 
    public static function setE($val) {
       self::$example = $val;
    }
}
Example::$example = explode(' ', 'simple example');
// or
Example::setE(explode(' ', 'nudder example'));

您应该能够执行以下操作,

公共静态$example = 新数组('简单','示例');