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 相关文章推荐
QueryPath PHP 中的jQuery
Apr 11 PHP
PHP XML error parsing SOAP payload on line 1
Jun 17 PHP
php 判断数组是几维数组
Mar 20 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
php遍历数组的4种方法总结
Jul 05 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
php获取指定数量随机字符串的方法
Feb 06 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
PHP扩展Swoole实现实时异步任务队列示例
Apr 13 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
星际RPG字典
2020/03/04 星际争霸
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
JavaScript如何操作css
2020/10/24 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
小学教师个人先进事迹材料
2014/05/17 职场文书
实训报告范文大全
2014/11/04 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
python中的None与NULL用法说明
2021/05/25 Python
php访问对象中的成员的实例方法
2021/11/17 PHP
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python