博客列表 >PHP中路由变量的解析

PHP中路由变量的解析

蔚蓝世纪
蔚蓝世纪原创
2020年05月18日 18:57:45787浏览

一、什么是路由Route

路由的作用是简化URL访问地址,并根据定义的路由类型做出正确的解析。
比如在php中关于url的处理有以下2中方式:

  1. 通常的路径模式:http://网址/index.php?m=模块名称&c=控制器&a=方法
  2. pathinfo路径模式:http://网址/index.php/模块/控制器/方法

地址这么长,我们是记不住的,这个时候我们就可以用路由去简化他的地址,并且在缩短地址的同时进行一些规则的定义。

二、路由解析

即:获取路径信息->处理路径信息

代码演示:
  1. <?php
  2. // 首先建立控制器
  3. class UserController
  4. {
  5. public function getUser($id, $name)
  6. {
  7. return "天空的id ==> $id, 天空的姓名 ==> $name";
  8. }
  9. }
  10. // 1. 解析出PATHINFO
  11. $pathinfo = array_values(array_filter(explode('/', $_SERVER['PATH_INFO'])));//$_SERVER[‘PATH_INFO’]是全局变量
  12. // print_r($pathinfo);
  13. // 2. 解析控制器
  14. $controller = ucfirst(array_shift($pathinfo)) . 'Controller';
  15. // 3. 解析控制器中的方法
  16. $action = array_shift($pathinfo);//删除数组中的第一个元素,并返回被删除元素的值
  17. // print_r($pathinfo);
  18. // 4. 解析参数: pathinfo路径变量
  19. // 这里放的是从pathinfo中解析出来的变量组成的数组
  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. // print_r($params);
  28. // 5. 调用控制器方法
  29. $user = new $controller();
  30. echo $user->$action(...array_values($params));
  31. //http://php.edu/0514/route1.php/user/getuser/id/360/name/sky
输出结果:

总结:为什么要使用路由?

1.使用路由可以简化访问路径。
2.开启路由的强制使用,让用户只能从服务器定义的路由进来,避免了服务器数据被修改的危险。
3.可以通过路由定义好从这个路径进来是get操作还是post操作,避免杂乱。

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