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遍历文件夹与子目录的函数代码
Sep 26 PHP
dedecms函数分享之获取某一栏目所有子栏目
May 19 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
Oct 01 PHP
深入浅出php socket编程
May 13 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
php实现数据库的增删改查
Feb 26 PHP
降低PHP Redis内存占用
Mar 23 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
PHP CURL与java http使用方法详解
Jan 26 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
Oct 17 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.ini中文版(2)
2006/10/09 PHP
以文本方式上传二进制文件的PHP程序
2006/10/09 PHP
模板引擎正则表达式调试小技巧
2011/07/20 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
javascript中this指向详解
2016/04/23 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
Python生成pdf文件的方法
2014/08/04 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
python实现按行分割文件
2019/07/22 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
将相和教学反思
2014/02/04 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
不同意离婚代理词
2015/05/23 职场文书
golang特有程序结构入门教程
2021/06/02 Python
MySQL 聚合函数排序
2021/07/16 MySQL