博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分享一个PHP项目或者框架可用的路由类Router.class.php
阅读量:6479 次
发布时间:2019-06-23

本文共 4585 字,大约阅读时间需要 15 分钟。

功能描述:

这个路由类本来是我自己框架里的一个核心类文件,因为我想听听大家的看法和建议,所以才放出来,如果有什么建议的请直接说把,欢迎吐槽。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

/** * 框架路由类 * * @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;    }

转载地址:http://cvwuo.baihongyu.com/

你可能感兴趣的文章
hdoj:2086
查看>>
算法笔记_008:选择排序和冒泡排序【蛮力法】
查看>>
Spark MLlib架构解析(含分类算法、回归算法、聚类算法和协同过滤)
查看>>
为什么我会被淘汰?
查看>>
HDU 4704 Sum Fermat定律
查看>>
[Maven实战](9)传递性依赖
查看>>
smbclient和mount -t cifs共享win的共享文件夹? autocad小记
查看>>
windows查看端口占用以及关闭相应的进程
查看>>
Swift3命名空间的实现
查看>>
本地Gradle配置方法,免去长时间的更新同步等待
查看>>
仅Firefox中链接A无法实现模拟点击以触发其默认行为
查看>>
OpenCV实现将三幅图像合并在一张图片
查看>>
博客园cnblogs chrome右键插件 开发
查看>>
[C#]C#学习笔记-接口,集合与泛型
查看>>
.Net 中的反射(序章) - Part.1 – (转载)
查看>>
Xcode 4.3 免证书(iDP)开发+真机调试
查看>>
深入理解JavaScript系列(16):闭包(Closures)
查看>>
[不懂]纯虚函数
查看>>
aino/django-stringfield
查看>>
Calendar详解
查看>>