为什么我会收到此错误?如何解决?当在服务器上运行时发生致命错误:方法名称必须是字符串第8行
class Model extends Core_Model_Config_Data
{
protected function Load()
{
$a = file_properties();
$x0 = $this->$a["x0"](); line 8 error
$x0 = $this->$a["x1"]($x0);
$this->$a["x2"]($x0);
}
}
请帮帮我。
答案 0 :(得分:2)
试试这个:
protected function Load()
{
$a = file_properties();
$f = $a['x0'];
$x0 = $this->$f();
$f = $a['x1'];
$x0 = $this->$f($x0);
$f = $a['x2'];
$this->$f($x0);
}
显然,值$a['x0']
,$a['x1']
,$a['x2']
必须是字符串,并为该类保留有效的方法名称。
答案 1 :(得分:1)
是的,您的代码出现错误的原因有多种:
$a["x0"]
?它是一个字符串?如果是这样,该方法是否存在?$a
的字符串值用于引用可能是数组的属性"x0"
,那么预处理器可能很难计算出您要执行的操作。 {1}},它可能是一个Closure实例,还是一个方法名称的字符串?使用粗糙的括号清楚:$this->{$a["x0"]}();
method_exists($this, $a["x0"])
和is_callable(array($this, $a["x0"]))
检查在哪里?