PHP从零开始打造自己的MVC框架之路由类实现方法分析

这篇文章主要介绍了PHP从零开始打造自己的MVC框架之路由类实现方法,结合实例形式分析了MVC框架路由类的原理及定义方法,需要的朋友可以参考下。

本文实例讲述了PHP从零开始打造自己的MVC框架之路由类实现方法,分享给大家供大家参考,具体如下:

在core目录下,新建一个名为lib的子目录,然后把我们前面写个route.php这个文件移动到这个目录下。

PHP从零开始打造自己的MVC框架之路由类实现方法分析

因为route类文件路径修改,所以在实例化的时候:

new \core\lib\route();

然后我们来完善route.php:

  1. namespace core\lib;
  2. class Route
  3. {
  4. public $controller; // 控制器
  5. public $action; // 方法(动作)
  6. public function __construct()
  7. {
  8. // xxx.com/index.php/index/index
  9. // xxx.com/index.php/index
  10. /*
  11. * 1.隐藏index.php
  12. * 2.获取URL 参数部分
  13. * 3.返回对应控制器和方法
  14. * */
  15. if(isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != '/'){
  16. // 处理成这种格式:index/index
  17. $path = $_SERVER['REQUEST_URI'];
  18. $pathArr = explode('/',trim($path,'/'));
  19. if(isset($pathArr[0])){
  20. $this->controller = $pathArr[0];
  21. }
  22. unset($pathArr[0]);
  23. if(isset($pathArr[1])){
  24. $this->action = $pathArr[1];
  25. unset($pathArr[1]);
  26. }else{
  27. $this->action = 'index';
  28. }
  29. // url多余部分(参数部分)转换成 GET
  30. // id/1/str/2
  31. $count = count($pathArr) + 2;
  32. $i = 2;
  33. while($i < $count){
  34. if(isset($pathArr[$i + 1])){
  35. $_GET[$pathArr[$i]] == $pathArr[$i + 1];
  36. }
  37. $i = $i + 2;
  38. }
  39. p($_GET); // 打印GET
  40. }else{
  41. $this->controller = 'index'; // 默认控制器
  42. $this->action = 'index'; // 默认方法
  43. }
  44. }
  45. }