Php URL路由器解析控制器的参数

Php URL路由器解析控制器的参数,php,url-routing,Php,Url Routing,我知道这个问题看起来主要是基于观点,但基本上我有一个路由器类。 对于我正在制作的MVC应用程序,我将允许将3参数解析到控制器。类似于site.com/controller/action/arg1/arg2/arg3 在路由器中设置类似的设置是否会更容易维护上述代码: if (isset($url[2])) { array_push($this->args, $url[2]); } if (isset($url[3])) { array_push($this->args

我知道这个问题看起来主要是基于观点,但基本上我有一个路由器类。 对于我正在制作的MVC应用程序,我将允许将3参数解析到控制器。类似于
site.com/controller/action/arg1/arg2/arg3

在路由器中设置类似的设置是否会更容易维护上述代码:

if (isset($url[2])) {
    array_push($this->args, $url[2]);
}
if (isset($url[3])) {
    array_push($this->args, $url[3]);
}
if (isset($url[4])) {
    array_push($this->args, $url[4]);
}
创建一个数组,如:

Array (
    [0] => arg1,
    [1] => arg2,
    [2] => arg3
)
我传递给控制器的命令如下:
controller->action($args)

或者将其设置为:

if (isset($url[2])) {
    $this->arg_1 = $url[2];
}
if (isset($url[3])) {
    $this->arg_2 = $url[3];
}
if (isset($url[4])) {
    $this->arg_4 = $url[4];
}

允许像这样的访问:
controller->action($1,$2,$3)

我认为这取决于哪一个更适合您拥有的其余代码。通常,框架采用最后一种选择

$controller->action($arg1, $arg2, $arg3);
这可以使用

call_user_func_array(array($controller, $action), $args);

另一个减少代码的技巧是使用array\u slice

$args = array_slice($url, 2, 3);


类似的问题

谢谢你的回答,这里有一些有用的提示:-)