在Codeigniter中,URI中的参数自动提供给被调用的方法。
例如:url中的 /admin/edit/news/1
意味着在admin
控制器中,您可以执行以下操作:
function edit($table,$id)
{
echo $table; // outputs 'news'
echo $id; // outputs '1'
}
因此,从本质上讲,您可以在方法中命名和使用参数,而无需先前以该顺序"传递"它们,无论有多少,它们仍然按照它们在URI中出现的顺序传递给函数。
我猜这一定与__call()
魔法方法有关,但我无法理解如何将它们传递给被调用的方法,好像它们是单独的参数,而不是__call()
方法接收到的$args
数组。
这是如何实现的?
您可以在system/core/CodeIgniter.php
文件中看到围绕这个魔术的整体逻辑。
你可以看到它是如何实例化类的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
[]的