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

可以使用函数定义PHP静态类变量吗?,php,class,static,static-members,Php,Class,Static,Static Members,使用这样的变量创建一个类很好: class Example { public static $example = array('simple', 'example'); // ... } 但是,如果我使用函数,在定义变量时,我会得到一个意外的“(”,预期的“)”错误: class Example { public static $example = explode(' ', 'simple example'); // ... } 我在没有使用static关

使用这样的变量创建一个类很好:

class Example {
    public static $example = array('simple', 'example');
    // ... 
}
但是,如果我使用函数,在定义变量时,我会得到一个
意外的“(”,预期的“)”
错误:

class Example {
    public static $example = explode(' ', 'simple example');
    // ... 
}
我在没有使用
static
关键字的情况下尝试了它,但仍然得到了相同的错误。在定义这样的类变量时,是否可以使用函数?替代方案是什么

根据(我的重点):

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


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


公共静态$example=新数组('simple','example')

数组实际上不是一个函数,而是一个运算符文字,这就是它工作的原因。要使用函数,只需使用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'));

选择这个答案b/c,它提供了一种替代方法。Thx:]遗憾的是,你不能用这种方式使它成为最终的,但是如果你在它上面调用一个函数,你不可能真的希望它是任何你在运行中计算的东西。只需要创建一个名称空间,并在其中放入一个全局变量。。完全一样。你也不会假装“做OOP”。