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 ...
随机推荐
- volatile并不能保证数据同步、只能保证读取到最新主内存数据
在 java 垃圾回收整理一文中,描述了jvm运行时刻内存的分配.其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈, 线程栈保存了线程运行时候变量值信息.当线程访问某一个对象时候值的 ...
- chrome extension demos
chrome extension demos demo https://github.com/hartleybrody/buzzkill/blob/master/bootstrap.js https: ...
- 洛谷 P3380 bzoj3196 Tyvj1730 【模板】二逼平衡树(树套树)
[模板]二逼平衡树(树套树) 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 查询k在区间内的排名 查询区间内排名为k的值 修改某一位值上的数值 查询k在 ...
- getElementsByClassName的原生实现
DOM 提供了一个名为 getElementById() 的方法,这个方法将返回一个对象,这个对象就是参数 id 所对应的元素节点.另外,getElementByTagName() 方法会返回一个对象 ...
- 2018 BAT最新《前端必考面试题》
2018 BAT最新<前端必考面试题> 1.Doctype作用? 严格模式与混杂模式如何区分?它们有何意义? (1). 声明位于文档中的最前面,处于 标签之前.告知浏览器的解析器,用什么文 ...
- phalcon安装
参考网站:https://docs.phalconphp.com/zh/latest/reference/tools.html (中文版)cento6.5环境安装:cd ~mkdir phalconc ...
- rn初体验
react-native 需要的工具 .nodejs .rn cli .xcode and as ---------------- 打开终端,切换到根路径(mac中修改npm的默认安装来源) 一.op ...
- 题解 【luoguP1967 NOIp提高组2013 货车运输】
题目链接 题解 题意 给你一个无向图,求两个点之间的一条路径,使路径上的最小值最大 算法:Kruskal最大生成树+倍增lca 分析 首先容易知道,答案一定在该图的最大生成树上 之后问题便转换成了树上 ...
- JQuery学习二(获取元素控件并控制)
$(’#id‘).+function; 例如: 1 <head> 2 <title>JQuery</title> 3 <script src="js ...
- DOM通过ID或NAME获取值
DOM通过ID或NAME获取值 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...