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 相关文章推荐
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
smarty表格换行实例
Dec 15 PHP
php对象和数组相互转换的方法
May 12 PHP
php中smarty模板条件判断用法实例
Jun 11 PHP
php的闭包(Closure)匿名函数初探
Feb 14 PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 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 小乘法表实现代码
2009/07/16 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
python自动化测试实例解析
2014/09/28 Python
python生成密码字典的方法
2018/07/06 Python
python+opencv+caffe+摄像头做目标检测的实例代码
2018/08/03 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
Django实现学员管理系统
2019/02/26 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
美国在线购物频道:Shop LC
2019/04/21 全球购物
中专三年学习的个人自我评价
2013/12/12 职场文书
医药代表个人求职信范本
2013/12/19 职场文书
幼儿园教研活动方案
2014/01/19 职场文书
工作表现评语
2014/01/19 职场文书
优秀护士获奖感言
2014/02/20 职场文书
献爱心标语
2014/06/21 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript