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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
php中session退出登陆问题
Feb 27 PHP
深入理解PHP中的global
Aug 19 PHP
php中rename函数用法分析
Nov 15 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
php微信公众平台开发类实例
Apr 01 PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 PHP
PHP设计模式之注册树模式分析
Jan 26 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
phpstudy2020搭建站点的实现示例
Oct 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/10/09 PHP
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
php字符串过滤与替换小结
2015/01/26 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python正则表达式常用函数总结
2017/06/24 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
对python的输出和输出格式详解
2018/12/08 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
优秀班主任经验交流材料
2014/06/02 职场文书
先进员工获奖感言
2014/08/14 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server
oracle索引总结
2021/09/25 Oracle
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫