2016-12-23 60 views
0

我使用call_user_func_array在MVC结构,指向一个控制器和控制方法,并通过URL的参数:当我使用这个PHP call_user_func_array:如何将所有参数作为单个数组传递?

// 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])) { 

回答

1

很明显:

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

明白你,而不是我。我对此很陌生。但是谢谢你的帮助! – JROB

0

嗯,我想你可以得到所有的通过func_get_args传递给函数的参数。这只是返回一个包含所有参数的数组,而不需要在参数中指定期望的参数。