批改状态:合格
老师批语:以后, 这样的作业 , 应该有一个总结的, 直接放上代码就提交, 过上一个月, 你自己都不知道写的是什么?
// 路由的基本功能:将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);显示效果:

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号