我遇到了魔法__call
以下代码运行良好,除非在方法调用中有多个参数。我尝试了不同的解决方案而没有任何好的结果(仅$args
或implode(', ' $args)
不起作用)
public function __call($method, $args) {
if($this->methods[$method] != NULL)
return $this->objects[$this->methods[$method]]->$method($args[0]);
else trigger_error("Call undefined method " . $this->class . "::" . $method, E_USER_ERROR);
}
如果我这样写,那也是有效的:
return $this->objects[$this->methods[$method]]->$method($args[0], $args[1], $args[3]);
但是你可以看到这是不正确的,因为一个函数可以有0到无限的参数。
您知道如何修复多个参数的脚本吗?
答案 0 :(得分:8)
return call_user_func_array($this->objects[$this->methods[$method]]->$method, $args);
答案 1 :(得分:0)
试试这个:
public function __call($method, $parameters){
if (in_array($method, ['get', 'post'])) {
return $this->$method(...$parameters);
}
}