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 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
仿AS3实现PHP 事件机制实现代码
Jan 27 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
php 地区分类排序算法
Jul 01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
php获取twitter最新消息的方法
Apr 14 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
PHP数据对象PDO操作技巧小结
Sep 27 PHP
php中文字符串截取多种方法汇总
Oct 06 PHP
PHP观察者模式定义与用法实例分析
Mar 22 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 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中__get()和__set()的用法实例详解
2013/06/04 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
PHP递归算法的简单实例
2019/02/28 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Django 批量插入数据的实现方法
2020/01/12 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Pandas的Apply函数具体使用
2020/07/21 Python
django使用graphql的实例
2020/09/02 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
就业自荐信
2013/12/04 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android