В настоящее время я использую CodeIgniter.
Я пытаюсь написать функцию, которая может принимать неограниченное количество параметров.
Так что в контроллере это будет что-то вроде
function test($name, $others){ foreach($others){ //do something } }
и я мог бы назвать это
example.com/control/test/some name/param1/param2/param3/param4/param5...
Как я могу это настроить?
Вы можете получить связанный массив сегментов 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 } }
вы также можете сделать это следующим образом:
function foo($params=array()) { $params=func_get_args(); //print_r($params); }
поэтому любой url как:
site.com/controller/foo/param1/param2/param3/param4
создаст массив параметров.
Непонятно, почему вам нужно неограниченное (переменное) количество аргументов, но вы можете подумать, зачем они вам нужны.
Вы можете использовать альтернативную семантику URI для определенных типов аргументов. Часто дизайн URI – это путь к предмету в системе. Неограниченные параметры могут не ссылаться на ресурс, а скорее описывать его атрибуты. Хорошим примером этого являются теги.
/chicken/red+tall+fat
Теги легко реализуют в CodeIgniter с одним параметром.
Если параметры относятся к узлу, вы можете рассмотреть аналогичный подход:
/hen-house.bunk4.topshelf/chicken
Или, если иерархия важна как путь, вы можете использовать решение func_get_args()
выше.