我正在尝试将静态方法的输出分配给PHP中的静态变量,但始终会出错。
解析错误:语法错误,第8行的./MyClass.php中的意外T_FUNCTION
class MyClass
{
public static function myMethod()
{
return array('a' => 'b'); //some array
}
public static $myarr = self::myMethod();
}
我也试过......
class MyClass
{
public static $myarr = call_user_func(function
{
return array('a' => 'b'); //some array
}
);
}
...但是我在第3行得到了同样的错误。我经历了很多次,我没有看到任何错别字,所以我不确定我做错了什么。有什么想法吗?
答案 0 :(得分:4)
通过在声明时调用函数,无法为静态变量赋值。
引自manual(我的重点):
通过使用public,protected或private之一,然后是普通变量声明来定义它们。此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。
答案 1 :(得分:1)
变化:
public static myMethod()
要:
public static function myMethod()