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项目开发中最常用的自定义函数整理
Dec 02 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
thinkphp3.0 模板中函数的使用
Nov 13 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
php使用timthumb生成缩略图的方法
Jan 22 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
PHP操作Redis常用技巧总结
Apr 24 PHP
解决PhpStorm64不能启动的问题
Jun 20 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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处理换行符的问题 \r\n
2013/06/13 PHP
php单一接口的实现方法
2015/06/20 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
jQuery 使用手册(三)
2009/09/23 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
python如何实现一个刷网页小程序
2018/11/27 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
施工材料员岗位职责
2014/02/12 职场文书
中标通知书格式
2015/04/17 职场文书
实习指导老师意见
2015/06/04 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
Python Django获取URL中的数据详解
2021/11/01 Python
Pygame Time时间控制的具体使用详解
2021/11/17 Python
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers