<?php
/**
 * 路由
 * @author 角度 QQ:1286522207
 *
 */
class Dispatcher extends Action {
    private $url;
    private $config;
    function __construct(){
        $this->routerCheck();
    }
    /**
     * 路由检测
     */
    function routerCheck(){
        global $config;
        $this->config=$config;
        $suffix=$this->config['URL_HTML_SUFFIX'];
        //  获取当前路由参数对应的变量
        $paths = (array_filter(explode('/',trim(preg_replace('/\.'.$suffix.'$/','',$_SERVER['PHP_SELF']),'/'))));
        if ($this->config['URL_PATHINFO_MODEL']==1){
            define('__URL__','/'.$paths[0].'/');
        }elseif ($this->config['URL_PATHINFO_MODEL']==2){
            define('__URL__','/');
        }
        if (empty($paths[1])){
            $paths[1]='index';
        }
        if (empty($paths[2])){
            $paths[2]='index';
        }
        if (empty($paths[3])){
            $paths[3]='index';
        }
        $this->Action($paths);
    }
    /**
     * 实例化操作
     */
    function Action($paths){
        if ($paths[1]==$this->config['TMPL_ADMIN_PATH']){
            include APP_PATH.'/'.$this->config['TMPL_ADMIN_PATH'].'/commonAction.php';
            $A=APP_PATH.'/'.$paths[1]."/".$paths[2]."Action.class.php";
            $b=$paths[2];
            @$c=$paths[3];
        }else {
            $A=APP_PATH."/Action/".$paths[1]."Action.class.php";
            $b=$paths[1];
            $c=$paths[2];
        }
        if (is_file($A)){
            include $A;
            $action=$b."Action";
            @$controller = new $action();
            if(method_exists($controller, $c)){
                $controller->$c();
            }else {
                exit('方法不在');
            }
        }else {
            exit('类不在');
        }
 
    }
    /**
     * 解析为$_GET全局变量
     */
    function pathinfo(){
        $pathinfo=(array_filter(explode('/',$this->url)));
        $count=count($pathinfo);
        for($foo=1;$foo<$count;$foo+=2){
            $_GET[$pathinfo[$foo]]=($foo+2)==$count?array_shift(explode('.',$pathinfo[$foo+1])):$pathinfo[$foo+1];
        }
    }
    /**
     * 重排数组
     * @param unknown_type $array
     */
    function Reorder($array){
        $i=0;
        foreach ($array as $row){
            $a[$i++]=$row;
        }
        return $a;
    }
    function __destruct(){
         
    }
}

PHP路由代码的更多相关文章

  1. 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案

    作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段.简单地说,Sharding就是将原来单一 ...

  2. nodejs 用http模块搭建的服务器的路由,以及路由代码的重构过程

    我们打开浏览器浏览网页时,点击上面不同的模块,地址栏中的路由会发生相应的变化,从而,浏览器向服务器发起请求的内容也会发生改变,那么服务端,是如何来做的呢? 服务端也是,通过路由来做出不同的响应的,我们 ...

  3. DB 分库分表(5):一种支持自由规划无须数据迁移和修改路由代码的 Sharding 扩容方案

    作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段.简单地说,Sharding就是将原来单一 ...

  4. node的function函数和路由代码的小例子

    1.node事件循环 事件: const events=require("events"); emt=new events.EventEmitter(); function eve ...

  5. Vue总结第五天:vue-router (使用模块化(创建Vue组件)机制编程)、router-link 标签的属性、路由代码跳转、懒加载、路由嵌套(子路由)、路由传递数据、导航守卫)

    Vue总结第五天:vue-router ✿ 路由(器)目录: □  vue中路由作用 □  vue-router基本使用 □  vue-router嵌套路由 □  vue-router参数传递 □  ...

  6. 利用systemtap学习Linux路由代码

    http://bbs.chinaunix.net/thread-4090162-1-1.html 一.为什么要这样做读kernel route子系统代码,当我弄懂了数据结构之间的关系以及控制流程后,心 ...

  7. 嵌入式 hi3518平台增加路由代码

    <span style="font-family:Courier New;"> /********************************** (C) COPY ...

  8. 《精通MVC5.0》路由笔记

    MVC使用路由系统处理请求的URL.路由系统主要功能 检查请求的URL,并理解该URL对应的控制器和方法 生成URL地址 在MVC程序中有两种方式创建路由:convention-based routi ...

  9. laravel route路由

    基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 代码如下: Route::g ...

随机推荐

  1. 【.Net】C# 反编译工具之dnSpy

    下载地址:https://github.com/0xd4d/dnSpy/releases无需安装,和 ILSPY同门,感觉比ILSPY还强大 直接把dll拖拽到程序集资源管理器里面就可以啦

  2. 【ASP.NET Core】ASP.NET Core API 版本控制

    几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些dat ...

  3. el语句 的 变量只能从域对象中获取 所以需要先添加到域对象

    el语句 的 变量只能从域对象中获取 所以需要先添加到域对象

  4. python的if语句、while循环、for循环

    if语句 计算机又被称作电脑,意指计算机可以像人脑一样,根据周围环境条件(即expession)的变化做出不同的反应(即执行代码)if语句就是来控制计算机实现这一功能 语法: 1.单分支,单个条件判断 ...

  5. linux虚拟机磁盘扩展与分区大小调整

    有段时间觉得linux虚拟机上的磁盘不太够用,研究了下其磁盘扩展 1.linux虚拟机磁盘扩展 step1. 先关机在编辑虚拟机中,找到硬盘选项增加空间,进行扩展step2. 进入root fdisk ...

  6. Python:树的遍历

    各种遍历顺序如下图所示: 树的最大深度  # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = ...

  7. zlog使用手册

    zlog使用手册 来源 http://hardysimpson.github.io/zlog/UsersGuide-CN.html Contents Chapter 1  zlog是什么? 1.1   ...

  8. lalala

    <script type="text/javascript"> var a_idx = 0; var b_idx = 0; var a = new Array(&quo ...

  9. 【刷题】BZOJ 1002 [FJOI2007]轮状病毒

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...

  10. BZOJ1090:[SCOI2003]字符串折叠——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1090 Description 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠.记作S=S 2 ...