Blogger Information
Blog 43
fans 1
comment 0
visits 33950
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP中路由变量的解析
蔚蓝世纪
Original
790 people have browsed it

一、什么是路由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操作,避免杂乱。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:真实的路由其实是隐藏真实的访问URL, 通过名称映射来实现的
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post