2012-02-18 8 views
1

call_user_func_array()'s PHP manual's examplesでcall_user_func_array()を使用すると、変数fooおよびbarと混乱させることができます。codeigniterの_remapメソッド

とにかく、下記_remapComplexFunctionを考慮してください。

class MyClass extends CI_Controller 
{ 

    public function _remap($method, $params = array()) 
    { 

     if (method_exists($this, $method)) 
     { 
      return call_user_func_array(array($this, $method), $params); 
     } 

    } 

    public function ComplexFunction($param1, $param2, $param3, $param4) 
    { 
     // process 
     return 'done'; 
    } 

} 

今のコードワークのこの作品は、正しくだろうか?

$params = array(
       'param1' => '1', 
       'param2' => '2', 
       'param3' => '3', 
       'param4' => '4' 
       ); 

$myObject = new MyClass(); 

$output = call_user_func_array(array($myObject, 'ComplexFunction'), $params); 

echo $output; 
  1. $outputdoneだろうか?
  2. これは、コードシニターの_remap()関数で使用する信頼できる方法ですか?
+1

試しましたか?なぜあなたはそのようなコントローラをインスタンス化していますか? –

+0

実際、私は一般的な方法を探していました。これは私のコントローラを使用する方法ではありません。私のコントローラには他にも多くの方法があります。 'search()'メソッドには、ユーザが定義した順序で渡される多くのオプションのパラメータがあるので、 '_remap'関数を使うべきです。 –

答えて

1

_remap()関数がCIのコア関数によって呼び出され、一致するルートの各セグメントに対して別々の引数が渡されるため、これは機能しません。決して_remap()メソッドに電話する必要はありません。

関連する問題