2012-02-18 4 views
1

call_user_func_array()'s PHP manual's examples에서 call_user_func_array()를 사용하면 foobar 변수와 혼동 될 수 있습니다!코드 독립 실행 형 _remap 메서드

어쨌든

고려하십시오 _remap 아래 ComplexFunction : 이제 것입니다 코드가 작동이 조각이 제대로

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. codeigniter의 _remap() 함수에서 사용할 수있는 확실한 방법입니까?
+1

시도해 보셨습니까? 왜 당신은 그런 컨트롤러를 인스턴스화하고 있습니까? –

+0

사실 나는 일반적인 방법을 찾고있었습니다. 이것은 내가 컨트롤러를 사용하는 방식이 아닙니다. 내 컨트롤러에는 다른 많은 메소드가 있습니다. 'search()'메소드는 사용자가 정의한 순서대로 전달되는 많은 선택적 매개 변수를 가져야하므로'_remap' 함수를 사용해야합니다. –

답변

1

_remap() 함수가 CI의 핵심 기능에 의해 호출되고 일치하는 경로의 각 세그먼트에 대해 별도의 인수가 전달되므로이 방법은 작동하지 않습니다. 직접 _remap() 방법으로 전화하지 않아도됩니다.