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 读取文件的正确方法
Apr 29 PHP
简单的php 验证图片生成函数
May 21 PHP
利用PHP实现智能文件类型检测的实现代码
Aug 02 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
PHPMailer邮件发送的实现代码
May 04 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
PHP程序中使用adodb连接不同数据库的代码实例
Dec 19 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 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执行批量mysql语句的解决方法
2013/05/02 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
php桥接模式应用案例分析
2019/10/23 PHP
js post方式传递提交的实现代码
2010/05/31 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
python查看列的唯一值方法
2018/07/17 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
本科生职业生涯规划书范文
2014/01/21 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
家长学校实施方案
2014/03/15 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
委托证明范本
2014/11/25 职场文书