我继续在Kohana 3上发布此错误消息
ErrorException [警告]:call_user_func()期望参数1是有效的回调函数,找不到函数'pages_save'或函数名无效
在我的控制器内我有以下代码:
public function action_pages(){
return call_user_func('pages_'.$this->request->param('id'));
}
function pages_save(){
$this->auto_render = false;
}
如果我要访问admin / pages / save我应该重定向到pages_save()函数吗?但不知怎的,我不能? Kohana继续向我抛出以上所述的以下例外情况。我该怎么做呢优化是我心中的一件事,如果我做切换案例/ if-else块,如果有太多我需要做的话,它将永远带我...
答案 0 :(得分:2)
首先,您应该信任错误消息。这意味着你犯了一个错误。稍微清理你的代码:
public function action_pages()
{
$method = sprintf('pages_%s', $this->request->param('id'));
return call_user_func($method);
}
public function pages_save()
{
$this->auto_render = false;
}
此处的更改很少:向pages_save
添加了缺少的可见性说明符,并将methodname放入名为$method
的变量中。
现在它越来越明显,你在这里使用了一个未定义的公共函数名,而不是你想在$this
上调用的类方法。所以让我们解决一下:
public function action_pages()
{
$method = sprintf('pages_%s', $this->request->param('id'));
return $this->$method();
}
这可以解决您的问题。
答案 1 :(得分:0)
这不是Kohana,它是PHP抛出错误。要在类中使用call_user_func()
,您需要使用以下语法:
call_user_func(array($this, 'pages_'.$this->request->param('id')));