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 ...
随机推荐
- hdu 1068 Girls and Boys (二分匹配)
Girls and Boys Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 【刷题】BZOJ 4516 [Sdoi2016]生成魔咒
Description 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一个魔咒串 [1,2]. 一个魔咒串 S 的非空字串被称为魔咒串 S 的生成魔咒. 例 ...
- Linux相关——手写测试程序
由于本人太弱,,,不会lemon,,,也不会在ubuntu下安装lemon,所以我选择手写测试程序emmmm 首先要写这个东西我们要先知道对拍怎么写. ; i <= ; i++) { syste ...
- BZOJ1858:[SCOI2010]序列操作——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1858 lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于 ...
- 数据库sharding,横向扩展
学习资料如下: http://www.cnblogs.com/skyme/p/3459765.html http://my.oschina.net/anthonyyau/blog/307165 htt ...
- 从零开始学Linux系统(四)之Vi/Vim操作指令
模式切换: 编辑模式 <-- [:]<--命令模式 -->[a.i.o A.I.O]--> 插入模式 编辑模式操作: 设置行号 :set nu :set nonu 复制 ...
- 【HASH】【UVA 10125】 Sumset
传送门 Description 给定一个整数集合S,求一个最大的d,满足a+b+c=d,其中a,b,c,d∈S Input 多组数据,每组数据包括: 第一行一个整数n,代表元素个数 下面n行每行一个整 ...
- Linux之poll与select20160619
使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的访问,这两个系统调用最终又会引发设备驱动中的poll()函数被执行 如果当前不可读(先调用驱动.p ...
- ufw坑
ufw就是一个iptables的快捷应用.今天被这个给坑了. 一个同时没事随便修改ufw,结果ssh登陆不上,ldap什么的都被阻断了. 直接iptables -F,结果忘了修改policy,直接没法 ...
- mysql 字段为NULL的一些操作
1. 修改字段为NULL update tableName set column1 = null where id = 1 2. 字段是否为NULL (1)字段为空 select * tableNam ...