CodeIgniter - 无限参数?

时间:2010-11-21 09:39:15

标签: php codeigniter url-routing

我目前正在使用CodeIgniter。

我正在尝试编写一个可以使用无限数量的参数的函数。

所以在控制器中它会像

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

我可以称之为

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

我该如何设置?

3 个答案:

答案 0 :(得分:6)

您可以使用URI class中的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
    }
}

答案 1 :(得分:6)

你也可以这样做:

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

所以任何网址都像:

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

会创建一个参数数组。

答案 2 :(得分:0)

目前尚不清楚为什么需要无限(可变)数量的参数,但您可能想要考虑为什么需要它们。

您可以对某些类型的参数使用替代URI语义。 URI设计通常是系统中事物的路径。无限参数可能不是指资源,而是描述其属性。标签就是一个很好的例子。

/chicken/red+tall+fat

标签可以在CodeIgniter中使用单个参数轻松实现。

如果参数引用节点,您可以考虑类似的方法:

/hen-house.bunk4.topshelf/chicken

或者,如果层次结构作为路径很重要,您可以使用上面的func_get_args()解决方案。