MVC架构中的路由解析原理
- 1.当服务器接收到一个url请求时,服务器会获得一个超全局数组
$_SERVER
,记录url请求的各种信息,例如当服务器收到类似http://moon.io/0222/api/moon.php/user/index/id/1/name/moon
这种url请求时,通过var_dump($_SERVER)
可获得如下图数据
通过解析pathinfo信息,达到访问,moon.php中的index方法,代码如下
<?php
namespace mvc;
class User
{
function index($id, $name)
{
return "您好$name,您的id是$id";
}
}
$pathinfo = array_values(array_filter(explode("/", $_SERVER['PATH_INFO'])));
$controller = __NAMESPACE__ . '\\' . array_shift($pathinfo);
$method = array_shift($pathinfo);
for ($i = 0; $i < count($pathinfo); $i += 2) {
$params[$pathinfo[$i]] = $pathinfo[$i + 1];
}
echo call_user_func_array([(new $controller), $method], $params);
上述代码执行结果如下: