在codeigniter的_remap方法中使用call_user_func_array()

时间:2012-02-18 13:06:17

标签: php codeigniter url-rewriting codeigniter-url remap

call_user_func_array()'s PHP manual's examples只能让我对那些foobar变量更加困惑!

无论如何,请考虑下面的_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. 这是在codeigniter的_remap()函数中使用的可靠方法吗?

1 个答案:

答案 0 :(得分:2)

这不起作用,因为_remap()函数由CI的核心函数调用,并且它为匹配的路由中的每个段传递一个单独的参数。您永远不必自己调用_remap()方法!