我有一个小函数,我用它来调用我班级中的一些函数。
public static function call($method){
$Model = new Model();
if(method_exists($Model, $method)){
return $Model->{$method}();
}
}
现在,我的问题是关于传递的参数。我想重新传递它们,我不想传递一个数组,而是传递实际的参数。
我知道函数 func_get_arg() 和 func_num_args(),但这不起作用:
$args = '';
for($i=0; $i<func_num_args(); $i++){
$args .= func_get_args($i).',';
}
$args = substr($args, 0, strlen($args)-1);
有没有我可以调用并传入 $Model->{$method}(passed_args) 的替代方法?
更新
我尝试将方法更改为此,但它不起作用:
public static function call($method){
$Model = new Model();
$args = func_get_args();
if(method_exists($Model, $method)){
return call_user_func_array(array($Model, $method), $args);
}
}
如果我这样做,它会起作用,因为直到现在我只有一个 arg 或没有:
public static function call($method, $args = null){
$Model = new Model();
if(method_exists($Model, $method)){
return $Model->{$method}($args);
}
}
解决方案:
当然我必须改变方法调用:
public static function call(){
$Model = new Model();
$args = func_get_args();
$method = array_shift($args);
if(method_exists($Model, $method)){
return call_user_func_array(array($Model, $method), $args);
}
}
以上工作。谢谢你。