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配置文件中最常用四个ini函数
Mar 19 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
php写的简易聊天室代码
Jun 04 PHP
php递归创建和删除文件夹的代码小结
Apr 13 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
PHP中error_log()函数的使用方法
Jan 20 PHP
PHP获取文件夹内文件数的方法
Mar 12 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
php获取远程文件内容的函数
Nov 02 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 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框架Symfony2经典入门教程
2014/07/08 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
python实现文本文件合并
2015/12/29 Python
python实现K最近邻算法
2018/01/29 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
使用python turtle画高达
2020/01/19 Python
python对文件的操作方法汇总
2020/02/28 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
Structs界面控制层技术
2013/10/11 面试题
职业培训师职业生涯规划
2014/02/18 职场文书
心理健康日活动总结
2014/05/08 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
如何写观后感
2015/06/19 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers