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 ...
随机推荐
- 第52天:offset家族、scroll家族和client家族的区别
一.offset家族 1.offsetWidth offsetHeight offsetLeft offsetTop offsetParent共同组成了offset家族,用来获取元素尺寸. offse ...
- js滚动大于多少菜单就开始固定
//导航置顶 $(window).scroll(function () { var pos = $(window).scrollTop(); ) { $("#menu").addC ...
- SpringBoot JDBC/AOP
JDBC 工程结构: pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmln ...
- 在Ubuntu系统下编译arcsim仿真器
首先,用tar zxvf arcsim-0.2.1.tar.gz 将软件包解压 然后,打开里面的INSTALL文件,按照里面的步骤一步一步安装库.Ubuntu13.04下 1.BLAS sudo ap ...
- XML-RPC协议学习
XML-RPC调用包括2部分:客户端client(调用线程).服务器端server(被调用的线程).服务端是通过特定的URL获得的,调用过程如下: 1.客户端程序使用XML-RPC客户端发出作业请求, ...
- BZOJ3670 & 洛谷2375 & UOJ5:[NOI2014]动物园——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3670 https://www.luogu.org/problemnew/show/P2375#su ...
- excel 列索引(数字)转列名
function index2ColName($columnNumber) { $dividend = $columnNumber; while ($dividend > 0) { $modul ...
- MySQL安装出现“不是内部或外部命令,也不是可执行程序”等一系列问题的解决方案
MySQL安装出现“不是内部或外部命令,也不是可执行程序” 一.这是应该是环境变量处问题了,设置如下: 1)右击我的电脑选择“属性”,找到“高级系统设置” 2)在系统属性下,选择“高级”中的“环境变量 ...
- 非代码抽取的dex加固脱壳
常见的非代码抽取的dex加固,可以通过修改或者hook源码中的dex解析函数拿到目标dex完成脱壳.该dex解析函数为DexFile* dexFileParse(const u1* data, siz ...
- 【图论-最短路】【P3393】逃离僵尸岛
传送门 Description 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵 ...