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
基于mysql的论坛(4)
Oct 09 PHP
对Session和Cookie的区分与解释
Mar 16 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
php面向对象全攻略 (五) 封装性
Sep 30 PHP
完美实现GIF动画缩略图的php代码
Jan 02 PHP
php array的学习笔记
May 10 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
php字符串函数 str类常见用法示例
May 15 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
php中Smarty模板初体验
2011/08/08 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
python实现屏保计时器的示例代码
2018/08/08 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
新郎婚宴答谢词
2014/01/19 职场文书
政府个人对照检查材料
2014/08/28 职场文书
服务行业演讲稿
2014/09/02 职场文书
贷款担保书
2015/01/20 职场文书
会议开幕词
2015/01/28 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
信仰纪录片观后感
2015/06/08 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
Redis 哨兵机制及配置实现
2022/03/25 Redis