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+DBM的同学录程序(3)
Oct 09 PHP
php5编程中的异常处理详细方法介绍
Jul 29 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
php实现获取及设置用户访问页面语言类
Sep 24 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
Sep 22 PHP
PHP实现网站访问量计数器
Oct 27 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
PHP PDOStatement::debugDumpParams讲解
Jan 30 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版(4)
2006/10/09 PHP
php&amp;java(一)
2006/10/09 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
基本DOM节点操作
2017/01/17 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
原生JS实现留言板
2020/03/26 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
Python Grid使用和布局详解
2018/06/30 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
清明节扫墓活动方案
2014/03/02 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书