自动分配方法参数,如Codeigniter

时间:2015-10-24 12:34:12

标签: php codeigniter

在Codeigniter中,URI中的参数会自动提供给被调用的方法。

例如:

网址中的

/admin/edit/news/1意味着在admin控制器中,您可以执行以下操作:

function edit($table,$id)
{
    echo $table; // outputs 'news'
    echo $id; // outputs '1'
}

因此,从本质上讲,您可以在方法中命名和使用参数,而无需事先将它们传递给'按顺序在任何地方,无论有多少,它们仍然按照它们在URI中出现的顺序传递给函数。

我想这必须与__call()魔术方法有关,但我无法理解如何将它们传递给被调用的方法,就好像它们是单独的参数而不是$args方法收到的__call()数组。

这是如何实现的?

1 个答案:

答案 0 :(得分:1)

你可以在system/core/CodeIgniter.php文件上看到关于这个魔法的inteire逻辑。

您可以看到它是如何实例化该类的 https://github.com/bcit-ci/CodeIgniter/blob/develop/system/core/CodeIgniter.php#L500

而且,我突出显示了使用参数调用方法的行。

https://github.com/bcit-ci/CodeIgniter/blob/develop/system/core/CodeIgniter.php#L514

[]' S