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 相关文章推荐
PHP+Mysql+jQuery实现动态展示信息
Oct 08 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
php实现的click captcha点击验证码类实例
Sep 23 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
PHP图像处理类库及演示分享
May 17 PHP
PHP导出Excel实例讲解
Jan 24 PHP
php封装的mysqli类完整实例
Oct 18 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
thinkPHP3.2.2框架行为扩展及demo示例
Jun 19 PHP
php进行md5加密简单实例方法
Sep 19 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
js文件包含的几种方式介绍
2014/09/28 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
python迭代器的使用方法实例
2013/11/21 Python
Python中正则表达式的用法实例汇总
2014/08/18 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
制药工程专业毕业生推荐信
2013/12/24 职场文书
经销商会议欢迎词
2014/01/11 职场文书
工程负责人任命书
2014/06/06 职场文书
小学运动会班级口号
2014/06/09 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
2014年防汛工作总结
2014/12/08 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL