解决方案
感谢noufalcep,我使用
开始工作public function __call($method, $params){
return call_user_func_array(array($this->_rpc, $method), $params);
}
原始问题
我已经创建了一个包含另一个类jsonrpc的类,以便在我的项目中使用。
jsonrpc使用public function __call($method, $params)
来处理任何类型的泛型方法。
我也在我的班级中使用相同的,但这意味着我必须将$params
数组转换为单独的变量,作为参数传递给jsonrpc' s __call()
如何将$params
的数组更改为多个参数?
在我的包装器类中,我尝试使用...
来提供参数,但在使用[]
实例化数组时似乎只能工作。
一个简单的解决方案是编辑jsonrpc类如何处理它的参数,但我更倾向于保持其源不受影响。
我尝试了什么(显然每个__call
都是单独尝试的,而不是同时尝试...)
class Wrap{
//Could have been great, but doesn't work.
public function __call($method, $params){
$params = array_values($params);
return $this->_rpc->$method(...$params);
}
//Horrible, but works
public function __call($method, $params){
switch (count($params)) {
case 0:
return $this->_rpc->$method();
break;
case 1:
return $this->_rpc->$method($params[0]);
break;
case 2:
return $this->_rpc->$method($params[0], $params[1]);
break;
case 3:
return $this->_rpc->$method($params[0], $params[1], $params[2]);
break;
case 4:
return $this->_rpc->$method($params[0], $params[1], $params[2], $params[3]);
break;
default:
die("Horrible way doesn't have enough cases!");
break;
}
}
}
感谢。
答案 0 :(得分:1)
public function __call($method, $params){
return call_user_func_array($this->_rpc->$method(),$params)
}