2015-10-24 1 views
1

В Codeigniter параметры из URI автоматически становятся доступными вызываемому методу.Автоматически назначать аргументы метода, такие как Codeigniter

Например:

/admin/edit/news/1 в URL будет означать, что в контроллере admin, вы можете сделать следующее:

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

Таким образом, в сущности, вы можете назвать и использовать аргументы в метод, не предварительно «передавший их» в этом порядке где угодно, и независимо от того, сколько их есть, они все равно передаются функции в том порядке, в котором они появляются в URI.

Я предполагаю, что это должно иметь какое-то отношение к методу магии __call(), но я не могу понять, как передать их методу, вызываемому, как если бы они были отдельными аргументами, а не массивом $args, полученным метод __call().

Как это достигается?

+1

http://php.net/manual/en/function.call-user-func-array.php – Steve

+0

Спасибо Стив. Если вы добавите это как ответ, я соглашусь с ним. – Marc

ответ

1

Вы можете увидеть логику интуиции вокруг этой магии на файле 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

[] s