Blogger Information
Blog 52
fans 0
comment 3
visits 42317
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php学习:第22章 路由原理与解析
王小飞
Original
747 people have browsed it

介绍

解析出路由url的类,方法以及参数。
代码:

  1. <?php
  2. // 路由原理
  3. // 目标:将URL中的控制器,方法解析出来,映射到对应的控制器类和方法上
  4. // 控制器
  5. class UserController
  6. {
  7. // 创建一个方法,写出传入参数
  8. public function getUser($id, $name)
  9. {
  10. return "用户id ==> $id, 账户 ==> $name";
  11. }
  12. }
  13. //http://127.0.0.10/0514/index.php/控制器/方法/参数1/值1/参数2/值2/
  14. //http://127.0.0.10/0514/route1.php/user/getuser/id/188/name/qq3488326
  15. // 1. 解析出PATHINFO 将字符串利用‘/’切割 转为数组
  16. $pathinfo = array_values(array_filter(explode('/', $_SERVER['PATH_INFO'])));
  17. // print_r($pathinfo);
  18. // 2. 解析控制器
  19. $controller = ucfirst(array_shift($pathinfo)) . 'Controller';
  20. // 3. 解析控制器中的方法
  21. $action = array_shift($pathinfo);
  22. // print_r($pathinfo);
  23. // 4. 解析参数: pathinfo路径变量
  24. // 这里放的是从pathinfo中解析出来的变量组成的数组
  25. $params = [];
  26. for ($i=0; $i<count($pathinfo); $i+=2) {
  27. // 检查当前pathinfo变量是否有值?
  28. if (isset($pathinfo[$i+1])){
  29. $params[$pathinfo[$i]] = $pathinfo[$i+1];
  30. }
  31. }
  32. // print_r($params);
  33. // 5. 调用控制器方法
  34. $user = new $controller();
  35. echo $user->$action(...array_values($params));
  36. //http://127.0.0.10/0514/route1.php/user/getuser/id/188/name/qq3488326

效果

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