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

时间:2012-04-20 16:29:18

标签: php class static static-members

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

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

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

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

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

3 个答案:

答案 0 :(得分:4)

根据the documentation(强调我的):

  

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

答案 1 :(得分: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'));

答案 2 :(得分:1)

您应该可以执行以下操作,

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