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 相关文章推荐
用Socket发送电子邮件
Oct 09 PHP
支持oicq头像的留言簿(二)
Oct 09 PHP
php feof用来识别文件末尾字符的方法
Aug 01 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
curl和libcurl的区别简介
Jul 01 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 PHP
PHP创建多级目录的两种方法
Oct 28 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
PHP实现时间日期友好显示实现代码
Sep 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
php设计模式 State (状态模式)
2011/06/26 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
YII中assets的使用示例
2014/07/31 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
PHP PDOStatement::debugDumpParams讲解
2019/01/30 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
python-opencv颜色提取分割方法
2018/12/08 Python
python 实现识别图片上的数字
2019/07/30 Python
使用selenium和pyquery爬取京东商品列表过程解析
2019/08/15 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
如何基于线程池提升request模块效率
2020/04/18 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
什么是事务?为什么需要事务?
2012/01/09 面试题
请假条标准格式规范
2014/04/10 职场文书
委托书怎样写
2014/08/30 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
小学运动会开幕词
2015/01/28 职场文书
奖金申请报告模板
2015/05/15 职场文书
十八大观后感
2015/06/12 职场文书
用Python提取PDF表格的方法
2021/04/11 Python