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 ...
随机推荐
- 为什么 MongoDB (索引)使用B-树而 Mysql 使用 B+树
B-树由来 定义:B-树是一类树,包括B-树.B+树.B*树等,是一棵自平衡的搜索树,它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点.B-树是专门为外部存储器设计的,如磁盘,它对 ...
- [转]matlab语言中的assert断言函数
MATLAB语言没有系统的断言函数,但有错误报告函数 error 和 warning.由于要求对参数的保护,需要对输入参数或处理过程中的一些状态进行判断,判断程序能否/是否需要继续执行.在matlab ...
- Xcode开发技巧之code snippets(代码片段)
一.什么是代码片段 当在Xcode中输入dowhile并回车后,Xcode会出现下图所示的提示代码: 这就是代码片段,目的是使程序员以最快的速度输入常用的代码片段,提高编程效率.该功能是从Xcode4 ...
- libsvm 用在 婚介数据集中 预测 用户配对
分类前具备的数据集: 书本第九章数据集(训练集):agesonly.csv和matchmaker.csv. agesonly.csv 格式是: 男年龄,女年龄,是否匹配成功 24,30,1 30,4 ...
- 2016 China Final E - Bet
/************************************************************************* > File Name: E.cpp > ...
- BZOJ3343 & 洛谷2801:教主的魔法——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3343 https://www.luogu.org/problemnew/show/2801 题目描述 ...
- HDU2222:Keywords Search——题解
http://acm.hdu.edu.cn/showproblem.php?pid=2222 题目大意: 给定 n 个长度不超过 50 的由小写英文字母组成的单词,以及一篇长为 m 的文章,问有多少个 ...
- linux 使用vim文件加密/解密的方法
一. 利用 vim/vi 加密:优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了:缺点:很明显让别人知道加密了,容易让别人把加密的文件破坏掉,包括内容破坏和删除: vi编辑器相信大 ...
- SQL Server 2008设置主键为自增
环境:SQL Server 2008 问题:设置主键,将主键设为自增. 解决:点击table->选中表->design->选中需要设置主键的字段,单击右键"设置主键&quo ...
- dubbo介绍以及创建
1.什么是dubbo? DUBBO是一个分布式服务框架(关于框架,其实就是配置文件加java代码),致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2 ...