찾다
php教程php手册分享一个PHP项目或者框架可用的路由类Router.class.php

功能描述: 这个路由类本来是我自己框架里的一个核心类文件,因为我想听听大家的看法和建议,所以才放出来,如果有什么建议的请直接说把,欢迎吐槽。Router.class.php是一个实现url参数打包的php类文件,可用于基于mvc架构设计的项目,本类并未做异常处理,

功能描述:
这个路由类本来是我自己框架里的一个核心类文件,因为我想听听大家的看法和建议,所以才放出来,如果有什么建议的请直接说把,欢迎吐槽。Router.class.php是一个实现url参数打包的php类文件,可用于基于mvc架构设计的项目,本类并未做异常处理,使用者可以自行扩展

参数说明:
$url_mode:url模式,0 动态传参模式 例如:www.ruanpower.com/index.php?m=home&c=index&a=test&aid=5 1 pathinfo模式 例如:www.ruanpower.com/home/index/test/aid/5
$var_module: 模块变量名 例如:m、module
$var_controller:控制器变量名  例如:c、controller 
$var_action: 方法变量名 例如: a、action

使用说明:
Router::init(array $config); //传入参数进行初始化
$param=Router::makeUrl()    //makeUrl方法执行,完成参数打包

/**
 * 框架路由类
 *
 * @author mgckid
 */
class Router {

    static private $url_mode;
    static private $var_controller;
    static private $var_action;
    static private $var_module;

    /**
     * 初始化方法
     * @param type $config
     */
    static public function init($config) {
        self::$url_mode = $config['URL_MODE'];
        self::$var_controller = $config['VAR_CONTROLLER'];
        self::$var_action = $config['VAR_ACTION'];
        self::$var_module = $config['VAR_MODULE'];
    }

    /**
     * 获取url打包参数
     * @return type
     */
    static public function makeUrl() {
        switch (self::$url_mode) {
            //动态url传参 模式
            case 0:
                return self::getParamByDynamic();
                break;
            //pathinfo 模式
            case 1:
                return self::getParamByPathinfo();
                break;
        }
    }

    /**
     * 获取参数通过url传参模式
     */
    static private function getParamByDynamic() {
        $arr = empty($_SERVER['QUERY_STRING']) ? array() : explode('&', $_SERVER['QUERY_STRING']);
        $data = array(
            'module' => '',
            'controller' => '',
            'action' => '',
            'param' => array()
        );
        if (!empty($arr)) {
            $tmp = array();
            $part = array();
            foreach ($arr as $v) {
                $tmp = explode('=', $v);
                $tmp[1] = isset($tmp[1]) ? trim($tmp[1]) : '';
                $part[$tmp[0]] = $tmp[1];
            }
            if (isset($part[self::$var_module])) {
                $data['module'] = $part[self::$var_module];
                unset($part[self::$var_module]);
            }
            if (isset($part[self::$var_controller])) {
                $data['controller'] = $part[self::$var_controller];
                unset($part[self::$var_controller]);
            }
            if (isset($part[self::$var_action])) {
                $data['action'] = $part[self::$var_action];
                unset($part[self::$var_action]);
            }
            switch ($_SERVER['REQUEST_METHOD']) {
                case 'GET':
                    unset($_GET[self::$var_controller], $_GET[self::$var_action], $_GET[self::$var_module]);
                    $data['param'] = array_merge($part, $_GET);
                    unset($_GET);
                    break;
                case 'POST':
                    unset($_POST[self::$var_controller], $_POST[self::$var_action], $_GET[self::$var_module]);
                    $data['param'] = array_merge($part, $_POST);
                    unset($_POST);
                    break;
                case 'HEAD':
                    break;
                case 'PUT':
                    break;
            }
        }
        return $data;
    }

    /**
     * 获取参数通过pathinfo模式
     */
    static private function getParamByPathinfo() {
        $part = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
        $data = array(
            'module' => '',
            'controller' => '',
            'action' => '',
            'param' => array()
        );
        if (!empty($part)) {
            krsort($part);
            $data['module'] = array_pop($part);
            $data['controller'] = array_pop($part);
            $data['action'] = array_pop($part);
            ksort($part);
            $part = array_values($part);
            $tmp = array();
            if (count($part) > 0) {
                foreach ($part as $k => $v) {
                    if ($k % 2 == 0) {
                        $tmp[$v] = isset($part[$k + 1]) ? $part[$k + 1] : '';
                    }
                }
            }
            switch ($_SERVER['REQUEST_METHOD']) {
                case 'GET':
                    unset($_GET[self::$var_controller], $_GET[self::$var_action]);
                    $data['param'] = array_merge($tmp, $_GET);
                    unset($_GET);
                    break;
                case 'POST':
                    unset($_POST[self::$var_controller], $_POST[self::$var_action]);
                    $data['param'] = array_merge($tmp, $_POST);
                    unset($_POST);
                    break;
                case 'HEAD':
                    break;
                case 'PUT':
                    break;
            }
        }
        return $data;
    }

}

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
夸克网盘怎么分享到百度网盘?夸克网盘怎么分享到百度网盘?Mar 14, 2024 pm 04:40 PM

  夸克网盘和百度网盘都是很便利的存储工具,不少的用户们都在询问这两款软件互通吗?夸克网盘怎么分享到百度网盘?下面就让本站来为用户们来仔细的介绍一下夸克网盘的文件怎么保存到百度网盘方法吧。  夸克网盘的文件怎么保存到百度网盘方法  1、想要知道怎么把夸克网盘的文件转到百度网盘,首先在夸克网盘上下载需要保存的文件,然后打开百度网盘客户端后,选择压缩文件要保存的文件夹,双击打开该文件夹。  2、打开该文件夹后,点击窗口左上角区域的“上传”。  3、在电脑中找到需要上传的压缩文件,点击选

win7系统如何分享wifi热点win7系统如何分享wifi热点Jul 01, 2023 pm 01:53 PM

  win7系统如何分享wifi热点?我们电脑在连接了网络之后,也是可以进行无线网络的分享的。很多用户想要将自己电脑的网络分享到手机上来使用。很多小伙伴不知道怎么详细操作,小编下面整理了win7系统如何分享wifi热点的操作方法步骤,如果你感兴趣的话,跟着小编一起往下看看吧!  win7系统如何分享wifi热点的操作方法步骤  1、要想开启wifi热点,首先得要有无线网卡,笔记本是有自带的,pc的话可以购买一个随身wifi来分享wifi,这里就不叙述了。首先按下键盘上的windows键打开开始菜

芒果tv会员账号分享2023芒果tv会员账号分享2023Feb 07, 2024 pm 02:27 PM

芒果TV拥有各种类型的电影、电视剧、综艺等资源,用户可以在其中自由的选择进行观看。芒果tv会员不仅能够看到全部的VIP剧而且还能够设置最高清的画质,帮助用户爽快看剧,下面小编就给大家带来一些芒果tv免费的会员账号供用户们使用,赶紧来看一看吧。芒果tv最新会员账号免费分享2023:注意:都是收集的最新会员账号,可以直接登录使用,不要随意的修改密码。账号:13842025699密码:qds373账号:15804882888密码:evr6982账号:13330925667密码:jgqae账号:1703

win7企业版激活密钥有哪些的分享win7企业版激活密钥有哪些的分享Jul 09, 2023 pm 03:01 PM

win7企业版激活密钥有没有最新的?如果你安装的是官方win7企业版,会提示用windows7企业版产品密钥来激活,否则不能正常使用。所以小编接下来跟大家分享一些win7企业版激活密码,大家一起来看看吧。Q3VMJ-TMJ3M-99RF9-CVPJ3-Q7VF3KGMPT-GQ6XF-DM3VM-HW6PR-DX9G8MT39G-9HYXX-J3V3Q-RPXJB-RQ6D79JBBV-7Q7P7-CTDB7-KYBKG-X8HHCP72QK-2Y3B8-YDHDV-29DQB-QKWWM6JQ

分享惠普打印机驱动的两种安装方法分享惠普打印机驱动的两种安装方法Mar 13, 2024 pm 05:16 PM

  惠普打印机是很多办公室内必备的打印设备,在电脑上安装打印机驱动,可以完美解决打印机无法连接等等问题。那么惠普打印机驱动怎么安装?下面小编就给大家介绍两个惠普打印机驱动程序安装方法。  第一种方法:官网下载驱动  1、在搜索引擎中搜索惠普中国官网,在支持一栏中,选择【软件与驱动程序】。  2、选择【打印机】分类,在搜索框中输入你的打印机型号,点击【提交】,即可查找到你的打印机驱动。  3、根据你电脑的系统选择对应的打印机,win10即选择win10系统的驱动。  4、下载成功后,在文件夹中找到

番茄小说链接如何分享番茄小说链接如何分享Feb 27, 2024 pm 04:20 PM

番茄小说是丰富的小说宝库,其中汇聚了海量优质的小说资源。在这里,你可以根据自己的喜好,从多种不同类型的小说中挑选出心仪之作。对于热爱阅读的你,这无疑是一片可以自由翱翔的文学天地。有的时候遇到心仪的读物也像分享给好友一起阅读,但是很多用户们还不清楚究竟该如何分享,那么这篇教程攻略就将为大家带来详细的攻略介绍,想要了解的玩家们就快来跟着本文一起阅读吧!番茄小说怎么分享书给好友?1、打开番茄小说,点击进入小说,点击右上角分享图标。2、选择分享渠道,这里小编以分享至微信好友为例。3、点击分享。4、即可查

喵喵记账如何分享清单喵喵记账如何分享清单Mar 01, 2024 pm 03:00 PM

很多朋友在喵喵记账软件里会有自己的欲购清单,想要分享给其他好友时该怎么操作呢?下面为大家介绍一下分享时的操作方法。1.在手机中点击打开喵喵记账软件进入后,在页面的右下角点击“我的”进行切换。2.在个人中心页面里找到“购物清单”这一项后点击打开。3.接下来进入到我的购物清单界面里,在“欲购清单”选项卡的下方会看到自己设置的购物清单列表,在要分享的选项上面点击进入。4.在清单详情页的右上方点击并排的三个小圆点图标。5.这时图标下会弹出一个窗口,在里面点击选择“分享清单”这一项即可分享给其他好友。

电脑wps怎么分享文件?wps分享文件给好友的方法电脑wps怎么分享文件?wps分享文件给好友的方法Mar 13, 2024 pm 12:34 PM

  wps是一款颇受欢迎的办公软件,无论是在学习、工作还是生活中,都能大大提高工作效率。我们经常会将wps文件分享给需要的朋友,具体要怎么操作呢?下面就由小编来演示一下详细操作。  1、打开需要分享的文件。  2、点击文件,再点击分享文档。  3、权限选择仅指定人可查看/编辑,然后点击创建并分享。  4、然后点击复制链接。  5、打开自己要分享的途径,如分享微信好友,在输入框点击鼠标右键,选择粘贴。  6、然后点击发送就可以了。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구