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垃圾回收机制简单说明
Jul 22 PHP
有关php运算符的知识大全
Nov 03 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
php-fpm配置详解
Feb 12 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
May 27 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
php+redis实现消息队列功能示例
Sep 19 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
九步学会Python装饰器
2015/05/09 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
python程序输出无内容的解决方式
2020/04/09 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
英国领先的游戏零售商:GAME
2019/09/24 全球购物
电子专业毕业生自我鉴定
2014/01/22 职场文书
岗位职责的构建方法
2014/02/01 职场文书
如何写通讯稿
2015/07/22 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL