php编写一个简单的路由类


Posted in PHP onApril 13, 2011

类代码:

<?php 
class Router 
{ 
public function getRouter($types = 1) 
{ 
if ( isset($_SERVER['PATH_INFO']) ) 
{ 
$query_string = substr(str_replace(array('.html','.htm', '.asp', '//'), '',$_SERVER['PATH_INFO']),1); 
} 
else 
{ 
$query_string = str_replace($_SERVER['SCRIPT_NAME'], '',$_SERVER['PHP_SELF']); 
} 
if ( $types == 1 ) 
{ 
// 第一种类型以/分隔 
$temp = explode('/', $query_string); 
} 
elseif ($types == 2) 
{ 
$temp = explode('-', $query_string); 
} 
elseif ($types == 3) 
{ 
return array('Controller'=>$_GET['controller']); 
} 
if ( empty($temp[0]) ) 
{ 
return array('Controller' => 'index','Operate' => 'index'); 
} 
if ( empty($temp[1]) ) 
{ 
$temp[] = 'index'; 
} 
// 去除空项 
foreach ($temp as $val) 
{ 
if ($val) 
{ 
$url[] = $val; 
} 
} 
list($controller, $operate) = $url; 
//有参数的情况 
$params = array(); 
if ( count($url)>2 ) 
{ 
array_shift($url); 
array_shift($url); 
$params = $url; 
} 
return 
array( 
"Controller" => $controller, 
"Operate" => $operate, 
"params" => $params, 
); 
} 
} 
?>

调用方法:
<?php 
$url = new Router(); 
$url->getRouter(1); 
print_r($url); //在这里可以看到各元素 
?>
PHP 相关文章推荐
杏林同学录(二)
Oct 09 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
php汉字转拼音的示例
Feb 27 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
Jun 23 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
PHP切割汉字的常用方法实例总结
Apr 27 PHP
php 求质素(素数) 的实现代码
Apr 12 #PHP
php 5.3.5安装memcache注意事项小结
Apr 12 #PHP
php处理json时中文问题的解决方法
Apr 12 #PHP
php 面向对象的一个例子
Apr 12 #PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 #PHP
php表单提交问题的解决方法
Apr 12 #PHP
使用NetBeans + Xdebug调试PHP程序的方法
Apr 12 #PHP
You might like
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
php数据访问之查询关键字
2016/05/09 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
PHP学习记录之数组函数
2018/06/01 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
JavaScript中this详解
2015/09/01 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
Vue实现一个图片懒加载插件
2019/03/11 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
python爬取NUS-WIDE数据库图片
2016/10/05 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
暖通工程师岗位职责
2014/06/12 职场文书
森林防火宣传标语
2014/06/27 职场文书
毕业生工作求职信
2014/06/30 职场文书
2014年个人委托书范本
2014/10/13 职场文书
作弊检讨书范文
2015/05/06 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书