2

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

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

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

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

static我在没有关键字的情况下尝试了它,但仍然遇到同样的错误。在定义这样的类变量时是否可以使用函数?什么是替代方案?

4

3 回答 3

4

根据文档(强调我的):

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

于 2012-04-20T16:31:14.637 回答
2

数组实际上并不是一个函数,而是一个运算符字面量,这就是它起作用的原因。要使用函数,只需使用 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'));
于 2012-04-20T16:32:30.157 回答
1

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

public static $example = new array('simple','example');

于 2012-04-20T16:31:21.390 回答