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存储过程
Feb 14 PHP
PHP 远程关机实现代码
Nov 10 PHP
PHP is_dir() 判断给定文件名是否是一个目录
May 10 PHP
PHP的一个基础知识 表单提交
Jul 04 PHP
PHP代码优化的53个细节
Mar 03 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
Apr 08 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
php模拟post提交请求调用接口示例解析
Aug 07 PHP
浅谈PHP7中的一些小技巧
May 29 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
JS event使用方法详解
2008/04/28 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
Document.body.scrollTop的值总为零的快速解决办法
2016/06/09 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
应届毕业生自荐信例文
2014/02/26 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
何时使用Map来代替普通的JS对象
2021/04/29 Javascript