批改状态:合格
老师批语:路由可以写得很简单, 也可以写得很复杂, 但是路由的基本思想一定要搞明白, 这样不管是前端框架的路由, 还是php后端路由都能整明白
<?php
namespace zuoye;
/*
写一个简单的路由, 将URL地址直接路由一个函数上(注意不是类方法),
这个函数可以用闭包来实现, 大家想一下应该如何做?
为了简化代码, 大家可以暂时不考虑路由中的参数
* */
//请求url:http://php.io/0807/zuoye/route.php/Home/set/id/100/name/shazi
$uri = explode('/', $_SERVER['REQUEST_URI']);
echo '<pre>' . print_r($uri, true);
//从第下标为4的地方开始抓控制器,5为方法
$request['controller'] = $uri[4]."Controller";
$request['action'] = $uri[5];
//从6开始的下标是参数
$params = array_slice($uri,6);
$request['action']=function (...$arr) use( $request ){
$a = [];
for($i=0;$i<count($arr);$i=$i+2){
if(isset($arr[$i+1])){
$a[$arr[$i]]=$arr[$i+1];
}
}
return '方法名:'.$request['action'].' ,参数: '. '<pre>' . print_r($a, true);
};
echo call_user_func_array($request['action'],$params);点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号