【问题标题】:using call_user_func_array() in codeigniter's _remap method在 codeigniter 的 _remap 方法中使用 call_user_func_array()
【发布时间】:2012-03-09 15:08:26
【问题描述】:

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() 函数中使用的可靠方法吗?

【问题讨论】:

  • 你试过了吗?你为什么要这样实例化控制器?
  • 其实我一直在寻找一个通用的方法。这不是我使用控制器的方式。我的控制器中还有许多其他方法。我应该使用_remap 函数,因为search() 方法应该有许多以用户定义的顺序传递的可选参数。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 2011-04-06
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多