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 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
php中使用redis队列操作实例代码
Feb 07 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
PHP学习笔记(三):数据类型转换与常量介绍
Apr 17 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
PHPMailer发送邮件
Dec 28 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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环境搭建最新方法
2006/09/05 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
JS实现小星星特效
2019/12/24 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
python操作excel让工作自动化
2019/08/09 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
总经理文秘岗位职责
2014/02/03 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
实习协议书范本
2014/04/22 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
先进典型事迹材料
2014/12/29 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript