PHP路由代码
<?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路由代码的更多相关文章
- 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案
作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段.简单地说,Sharding就是将原来单一 ...
- nodejs 用http模块搭建的服务器的路由,以及路由代码的重构过程
我们打开浏览器浏览网页时,点击上面不同的模块,地址栏中的路由会发生相应的变化,从而,浏览器向服务器发起请求的内容也会发生改变,那么服务端,是如何来做的呢? 服务端也是,通过路由来做出不同的响应的,我们 ...
- DB 分库分表(5):一种支持自由规划无须数据迁移和修改路由代码的 Sharding 扩容方案
作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段.简单地说,Sharding就是将原来单一 ...
- node的function函数和路由代码的小例子
1.node事件循环 事件: const events=require("events"); emt=new events.EventEmitter(); function eve ...
- Vue总结第五天:vue-router (使用模块化(创建Vue组件)机制编程)、router-link 标签的属性、路由代码跳转、懒加载、路由嵌套(子路由)、路由传递数据、导航守卫)
Vue总结第五天:vue-router ✿ 路由(器)目录: □ vue中路由作用 □ vue-router基本使用 □ vue-router嵌套路由 □ vue-router参数传递 □ ...
- 利用systemtap学习Linux路由代码
http://bbs.chinaunix.net/thread-4090162-1-1.html 一.为什么要这样做读kernel route子系统代码,当我弄懂了数据结构之间的关系以及控制流程后,心 ...
- 嵌入式 hi3518平台增加路由代码
<span style="font-family:Courier New;"> /********************************** (C) COPY ...
- 《精通MVC5.0》路由笔记
MVC使用路由系统处理请求的URL.路由系统主要功能 检查请求的URL,并理解该URL对应的控制器和方法 生成URL地址 在MVC程序中有两种方式创建路由:convention-based routi ...
- laravel route路由
基本路由 您的应用程序的绝大多数路由将在 app/routes.php 文件中定义.Laravel 中最简单的路由由一个 URI 和一个闭包调用组成. 基本 GET 路由 代码如下: Route::g ...
随机推荐
- 【.Net】C# 反编译工具之dnSpy
下载地址:https://github.com/0xd4d/dnSpy/releases无需安装,和 ILSPY同门,感觉比ILSPY还强大 直接把dll拖拽到程序集资源管理器里面就可以啦
- 【ASP.NET Core】ASP.NET Core API 版本控制
几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些dat ...
- el语句 的 变量只能从域对象中获取 所以需要先添加到域对象
el语句 的 变量只能从域对象中获取 所以需要先添加到域对象
- python的if语句、while循环、for循环
if语句 计算机又被称作电脑,意指计算机可以像人脑一样,根据周围环境条件(即expession)的变化做出不同的反应(即执行代码)if语句就是来控制计算机实现这一功能 语法: 1.单分支,单个条件判断 ...
- linux虚拟机磁盘扩展与分区大小调整
有段时间觉得linux虚拟机上的磁盘不太够用,研究了下其磁盘扩展 1.linux虚拟机磁盘扩展 step1. 先关机在编辑虚拟机中,找到硬盘选项增加空间,进行扩展step2. 进入root fdisk ...
- Python:树的遍历
各种遍历顺序如下图所示: 树的最大深度 # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = ...
- zlog使用手册
zlog使用手册 来源 http://hardysimpson.github.io/zlog/UsersGuide-CN.html Contents Chapter 1 zlog是什么? 1.1 ...
- lalala
<script type="text/javascript"> var a_idx = 0; var b_idx = 0; var a = new Array(&quo ...
- 【刷题】BZOJ 1002 [FJOI2007]轮状病毒
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...
- BZOJ1090:[SCOI2003]字符串折叠——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1090 Description 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠.记作S=S 2 ...