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版(1)
Oct 09 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
Jun 24 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
ThinkPHP模型详解
Jul 27 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
php使用正则验证中文
Apr 06 PHP
php+ajax注册实时验证功能
Jul 20 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
Mar 22 PHP
解决laravel5.4下的group by报错的问题
Oct 16 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
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
JS中数组重排序方法
2016/11/11 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
Python3学习urllib的使用方法示例
2017/11/29 Python
python使用turtle绘制分形树
2018/06/22 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
python基于opencv检测程序运行效率
2019/12/28 Python
python识别验证码图片实例详解
2020/02/17 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
大学生找工作推荐信范文
2013/11/28 职场文书
综合实践教学反思
2014/01/31 职场文书
会计自我鉴定
2014/02/04 职场文书
人事任命书格式
2014/06/05 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
春节慰问简报
2015/07/21 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS