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 相关文章推荐
3.从实例开始
Oct 09 PHP
php数字转汉字代码(算法)
Oct 08 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
PHP二维数组去重算法
Dec 17 PHP
php中的异常和错误浅析
May 03 PHP
PHP后台备份MySQL数据库的源码实例
Mar 18 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用header函数实现301跳转代码实例
2013/11/25 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
js中replace的用法总结
2013/12/27 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
vue中如何去掉空格的方法实现
2018/11/09 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
对python中Json与object转化的方法详解
2018/12/31 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
Python实现区域填充的示例代码
2021/02/03 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
三星美国官网:Samsung美国
2017/02/06 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
企业内控岗位的职责
2014/02/07 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
学会感恩主题班会
2015/08/12 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
python中如何对多变量连续赋值
2021/06/03 Python
Python基本的内置数据类型及使用方法
2022/04/13 Python