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+dbfile开发小型留言本
Oct 09 PHP
一键删除顽固的空文件夹 软件下载
Jan 26 PHP
php下使用SimpleXML 处理XML 文件
Feb 27 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
浅谈php扩展imagick
Jun 02 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
HTML中嵌入PHP的简单方法
Feb 16 PHP
基于PHP制作验证码
Oct 12 PHP
PHP链表操作简单示例
Oct 15 PHP
php版微信返回用户text输入的方法
Nov 14 PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 PHP
Laravel使用支付宝进行支付的示例代码
Aug 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
php中处理模拟rewrite 效果
2006/12/09 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Python操作mongodb的9个步骤
2018/06/04 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
python中的decorator的作用详解
2018/07/26 Python
python一些性能分析的技巧
2020/08/30 Python
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
商务专员岗位职责
2013/11/23 职场文书
初一新生军训方案
2014/05/22 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
javascript实现计算器功能详解流程
2021/11/01 Javascript
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript