PHP call_user_func_array:如何将所有参数作为单个数组传递?

时间:2016-12-23 21:24:19

标签: php

我在MVC结构中使用call_user_func_array指向控制器和方法并传递URL的参数:

// At this point, $url is an array with nothing but parameters

$this->params = $url ? array_values($url) : []; //

call_user_func_array([$this->controller, $this->method], $this->params); 

现在当我使用它时:

class Home extends Controller {

    public function index($param1=null, $param2=null) { // Ugly...

      // .. continue

有没有办法将所有参数作为单个数组发送到类方法?不知道是否有任何参数可以开始,如果有,那就不知道有多少参数。我不想这样做:

public function index($param1=null, $param2=null, $param3=null, $param4=null) {

我希望这样做:

public function index($params) {

  if (isset($params[0])) {

2 个答案:

答案 0 :(得分:1)

很明显:

call_user_func_array(
    [$this->controller, $this->method], 
    [$this->params]
);

答案 1 :(得分:0)

我认为你可以通过func_get_args获得传递给函数的所有参数。这只返回所有参数的数组,而不需要在paranthesis中指定预期的args。