创建一个包含这样的变量的类可以正常工作:
class Example {
public static $example = array('simple', 'example');
// ...
}
但是,如果我使用函数,在定义变量时,我会收到unexpected '(', expecting ')'
错误:
class Example {
public static $example = explode(' ', 'simple example');
// ...
}
我在没有static
关键字的情况下尝试了它,但仍然遇到了同样的错误。在定义类变量时是否可以使用函数?有什么选择?
答案 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');