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-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
May 27 PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP获取对象属性的三种方法实例分析
Jan 03 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
微信公众平台开发教程②微信端分享功能图文详解
Apr 10 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
漂亮的thinkphp 跳转页封装示例
Oct 16 PHP
PHP策略模式写法
Apr 01 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
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
php while循环得到循环次数
2013/10/26 PHP
PHP异常处理Exception类
2015/12/11 PHP
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
Python实现视频下载功能
2017/03/14 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
天游软件面试
2013/11/23 面试题
生产经理的自我评价分享
2013/11/07 职场文书
项目经理任命书内容
2014/06/06 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
nginx配置限速限流基于内置模块
2022/05/02 Servers