我正在尝试声明一个公共静态变量,它是一个数组数组:
class Foo{
public static $contexts = array(
'a' => array(
'aa' => something('aa'),
'bb' => something('bb'),
),
'b' => array(
'aa' => something('aa'),
'bb' => something('bb'),
),
);
// methods here
}
function something($s){
return ...
}
但是我收到了一个错误:
解析错误:解析错误,期待 '')''在......
答案 0 :(得分:9)
声明类属性时不能使用表达式。即你不能在这里拨打something()
,你只能使用静态值。您必须在代码中以某种方式设置这些值。
与任何其他PHP静态变量一样,静态属性只能使用文字或常量初始化;表达式是不允许的。因此,虽然您可以将静态属性初始化为整数或数组(例如),但您可能不会将其初始化为另一个变量,函数返回值或对象。
例如:
class Foo {
public static $bar = null;
public static function init() {
self::$bar = array(...);
}
}
Foo::init();
如果您要实例化该类,请在__construct
中执行。