博客列表 >PHP:路由的解析

PHP:路由的解析

楷
原创
2020年05月17日 21:51:381710浏览

URL的路由解析(pathinfo方式)

  1. <?php
  2. // 路由原理
  3. // 目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上
  4. // http://phpedu11//0514/pathinforoute.php/user/getuser/id/50/name/peter
  5. // pathinfo方式
  6. // 控制器
  7. class userController{
  8. public function getUser($id,$name){
  9. return "您的ID ==>$id , 您的姓名==>$name";
  10. }
  11. }
  12. // 1.解析出PATHINFO
  13. $pathinfo = array_values( array_filter(explode('/', $_SERVER['PATH_INFO']))) ;
  14. // print_r($pathinfo);
  15. // 2.解析出控制器
  16. $Controller = ucfirst(array_shift($pathinfo) ). 'Controller';
  17. // 3.解析出方法
  18. $action = array_shift($pathinfo) ;
  19. // 4.解析出参数
  20. $params = [];
  21. for ($i=0;$i<count($pathinfo);$i+=2){
  22. // 检查当前pathinfo变量是否有值?
  23. if(isset($pathinfo[$i+1])){
  24. $params[$pathinfo[$i]] = $pathinfo[$i+1];
  25. }
  26. }
  27. // parse_str($_SERVER['QUERY_STRING'] , $params);
  28. // 5.调用控制器的方法
  29. $User = new $Controller();
  30. echo $User->$action(...array_values($params));

演示效果

总结:
1.URL含有丰富的路由信息。今天学习了如何把URL中的控制器、方法、参数等解析出来,再测试能否调用控制器的方法。
2.查询变量:获取URL中查询字符串(?后面的参数)
$_GET : 获取URL中?后面的参数,返回一个数组。要用implode()才能分解为查询字符串。
$_SERVER[‘QUERY_STRING’]:获取URL中?后面的参数,直接返回查询字符串。
3.路径变量:获取URL中pathinfo方式的字符串(含控制器、方法、参数、值等)。
$_SERVER[‘PATH_INFO’] : 返回一个pathinfo变量的字符串。
$_SERVER[‘QUERY_URI’]:返回一个接近完整的URL信息。
4.路由解析:
解析出PATHINFO->解析出控制器->解析出方法->解析出参数->调用控制器的方法
5.composer安装成功。
版本号:Composer version 1.10.6 2020-05-06 10:28:10

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议