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中使用与Perl兼容的正则表达式
Nov 26 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
让PHP支持断点续传的源码
May 16 PHP
解决FastCGI 进程超过了配置的活动超时时限的问题
Jul 03 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
Joomla调用系统自带编辑器的实现方法
May 05 PHP
php中mkdir()函数的权限问题分析
Sep 24 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
Apr 13 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判断所处服务器操作系统的类型
2013/06/20 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
python配置grpc环境
2019/01/01 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python将数组n等分的实例
2019/12/02 Python
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
模具专业推荐信
2013/10/30 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
学期个人自我总结
2015/02/13 职场文书
工作自我评价范文
2015/03/05 职场文书
2015年酒店工作总结
2015/04/28 职场文书
现实表现证明材料
2015/06/19 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
Window server中安装Redis的超详细教程
2021/11/17 Redis
Android Studio 计算器开发
2022/05/20 Java/Android