CodeIgniter - неограниченные параметры? - PullRequest
3 голосов
/ 21 ноября 2010

Я в настоящее время использую CodeIgniter.

Я пытаюсь написать функцию, которая может принимать неограниченное количество параметров.

Так что в контроллере это будет что-то вроде

function test($name, $others){
    foreach($others){
       //do something
    }
}

и я мог бы назвать это как

example.com/control/test/some name/param1/param2/param3/param4/param5... 

Как я могу настроить это?

Ответы [ 3 ]

6 голосов
/ 21 ноября 2010

Вы также можете сделать это так:

function foo($params=array())
{
    $params=func_get_args();
    //print_r($params);
}

так что любой URL вроде:

site.com/controller/foo/param1/param2/param3/param4

создаст массив параметров.

6 голосов
/ 21 ноября 2010

Вы можете получить связанный массив сегментов URI с помощью функции uri_to_assoc в классе URI .Так что в вашем контроллере вы можете сделать что-то вроде этого:

function test($name){
    $uri_seg = $this->uri->uri_to_assoc(4);

    foreach($uri_seg as $para){
        // Do something with each of the URI segments passed in here after $name
    }
}
0 голосов
/ 21 ноября 2010

Непонятно, зачем вам неограниченное (переменное) количество аргументов, но вы можете подумать, зачем они вам нужны.

Вы можете использовать альтернативную семантику URI для определенных типов аргументов.Часто дизайн URI - это путь к элементу в системе.Неограниченные параметры могут не ссылаться на ресурс, а описывать его атрибуты.Теги являются хорошим примером этого.

/chicken/red+tall+fat

Теги легко реализуются в CodeIgniter с одним параметром.

Если параметры относятся к узлу, вы можете рассмотреть аналогичный подход:

/hen-house.bunk4.topshelf/chicken

Или, если иерархия важна как путь, вы можете использовать приведенное выше решение func_get_args().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...