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 什么是PEAR?(第二篇)
Mar 19 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
PHP数据库调用类调用实例(详细注释)
Jul 12 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
Apr 29 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
php实现utf-8转unicode函数分享
Jan 06 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
PHP APP微信提现接口代码
Sep 30 PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
有关 PHP 和 MySQL 时区的一点总结
2008/03/26 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
php curl基本操作详解
2013/07/23 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
js实现日历
2020/11/07 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
马云的职业生涯规划之路
2014/01/01 职场文书
万年牢教学反思
2014/02/15 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
消防志愿者活动方案
2014/08/23 职场文书
九寨沟导游词
2015/02/02 职场文书
商场广播稿范文
2015/08/19 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
react 项目中引入图片的几种方式
2021/06/02 Javascript
golang使用map实现去除重复数组
2022/04/14 Golang
Golang Web 框架Iris安装部署
2022/08/14 Python