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


Posted in PHP onJune 03, 2019

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

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

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

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

new \core\lib\route();

然后我们来完善route.php:

<?php
namespace core\lib;
class Route
{
  public $controller; // 控制器
  public $action; // 方法(动作)
  public function __construct()
  {
    // xxx.com/index.php/index/index
    // xxx.com/index.php/index
    /*
     * 1.隐藏index.php
     * 2.获取URL 参数部分
     * 3.返回对应控制器和方法
     * */
    if(isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != '/'){
      // 处理成这种格式:index/index
      $path = $_SERVER['REQUEST_URI'];
      $pathArr = explode('/',trim($path,'/'));
      if(isset($pathArr[0])){
        $this->controller = $pathArr[0];
      }
      unset($pathArr[0]);
      if(isset($pathArr[1])){
        $this->action = $pathArr[1];
        unset($pathArr[1]);
      }else{
        $this->action = 'index';
      }
      // url多余部分(参数部分)转换成 GET
      // id/1/str/2
      $count = count($pathArr) + 2;
      $i = 2;
      while($i < $count){
        if(isset($pathArr[$i + 1])){
          $_GET[$pathArr[$i]] == $pathArr[$i + 1];
        }
        $i = $i + 2;
      }
      p($_GET); // 打印GET
    }else{
      $this->controller = 'index'; // 默认控制器
      $this->action = 'index'; // 默认方法
    }
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
如何使用PHP中的字符串函数
Oct 09 PHP
解决中英文字符串长度问题函数
Jan 16 PHP
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
Jun 13 PHP
php switch语句多个值匹配同一代码块应用示例
Jul 29 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
php数组键值用法实例分析
Feb 27 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
验证坐标在某坐标区域内php代码
Oct 08 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 #PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 #PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 #PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 #PHP
PHP使用ActiveMQ实现消息队列的方法详解
May 31 #PHP
php中的buffer缓冲区用法分析
May 31 #PHP
PHP实现基于状态的责任链审批模式详解
May 31 #PHP
You might like
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
详解Python中的正则表达式的用法
2015/04/09 Python
Python中特殊函数集锦
2015/07/27 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
Python 使用多属性来进行排序
2019/09/01 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
管理部部长岗位职责
2013/12/05 职场文书
阳光体育活动方案
2014/02/16 职场文书
人事经理岗位职责
2014/04/28 职场文书
南湾猴岛导游词
2015/02/09 职场文书
初中语文教学研修日志
2015/11/13 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书