// 路由的基本功能:将URL地址pathinfo,映射到指定的控制器方法中
// 路由是一个请求分发器
<?php // 路由的基本功能:将URL地址pathinfo,映射到指定的控制器方法中 // 路由是一个请求分发器 // http://700***/0807/demo/mvc/route2.php/product/id/3/price/36.9 //product:方法 //id、name:参数 $uri = $_SERVER['PATH_INFO']; echo $uri; echo '<hr>'; // 输出:/product/id/3/price/36.9 // 1、从pathinfo切割出独立的单元 $request = explode('/', $uri); echo '<pre>' . print_r($request, true); echo '<hr>'; // 2、从pathinfo中解析出操作 $pathinfo['action'] = $request[1]; echo '<pre>' . print_r($pathinfo, true); echo '<hr>'; // 3、从pathinfo中解析出变量键值对 $values = array_slice($request,2); echo '<pre>' . print_r($values,true); echo '<hr>'; $pathinfo['action'] = function (...$arr) use ($pathinfo){ for ($i=0; $i<count($arr); $i+=2){ if (isset( $arr[$i+1] )){ $params[$arr[$i]] = $arr[$i+1]; } } $str = ''; foreach ($params as $key=>$value) { $str .= $key . ' = ' .$value .' '; } return '方法名:' . $pathinfo['action'] . '参数:' . $str; }; echo call_user_func_array($pathinfo['action'], $values);
显示效果: