2012-02-18 2 views
1

call_user_func_array()'s PHP manual's examples может только смутить меня с такими foo и bar переменными!using call_user_func_array() в методе _remap метода codeigniter

Во всяком случае, пожалуйста, рассмотреть _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. Будет ли $output быть done?
  2. Это надежный способ использования в функции codeigniter _remap()?
+1

Вы пробовали? Почему вы создаете экземпляр контроллера? –

+0

На самом деле я искал общий путь. Это не так, как я использую свой контроллер. В моем контроллере также есть много других методов. Я должен использовать функцию '_remap', потому что метод' search() 'должен иметь множество необязательных параметров, которые передаются в определенном пользователем порядке. –

ответ

1

Это не будет работать, поскольку функция _remap() вызывается основными функциями CI и передается отдельный аргумент для каждого сегмента в согласованном маршруте. Вам не нужно будет самостоятельно называть метод _remap()!