2016-12-23 1 views
0

私は、コントローラおよび方法を指すとURLのパラメータを渡すMVC構造でcall_user_func_arrayを使用しています: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 

はにどのような方法がありますすべてのパラメータを1つの配列としてクラスメソッドに送りますか?始めるパラメータがあるかどうかは分かりませんが、存在する場合、何個のパラメータがあるかはわかりません。私がしなければならないしたくない:

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経由で関数に渡されます。これは、paranthesisで期待されるargsを指定する必要なしに、すべての引数の配列を返します。

関連する問題