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
thinkphp3.0 模板中函数的使用
Nov 13 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
php的sso单点登录实现方法
Jan 08 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
PHP通过引用传递参数用法分析
Dec 01 PHP
PHP与SQL语句常用大全
Dec 10 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
php ajax confirm 删除实例详解
Mar 06 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
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
php 图像函数大举例(非原创)
2009/06/20 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
js trim函数 去空格函数与正则集锦
2009/11/20 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
python创建线程示例
2014/05/06 Python
python实现进程间通信简单实例
2014/07/23 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
机械系大学毕业生推荐信
2013/11/27 职场文书
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
初中美术教学反思
2014/01/29 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
促销活动总结模板
2014/07/01 职场文书
夏季药店促销方案
2014/08/22 职场文书
党员民主评议自我评价
2014/10/20 职场文书
费用申请报告范文
2015/05/15 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
Python中time标准库的使用教程
2022/04/13 Python