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分页代码详解
Mar 27 PHP
PHP用mysql数据库存储session的代码
Mar 05 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
PHP中去掉字符串首尾空格的方法
May 19 PHP
apache配置虚拟主机的方法详解
Jun 17 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
PHP的swoole扩展安装方法详细教程
May 18 PHP
php-beanstalkd消息队列类实例分享
Jul 19 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
jQuery EasyUI Dialog拖不下来如何解决
2015/09/28 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
通过cmd进入python的实例操作
2019/06/26 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
数控专业应届生求职信
2013/11/27 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
材料员岗位职责
2014/03/13 职场文书
家长对老师的评语
2014/04/18 职场文书
人事任命书范文
2014/06/04 职场文书
初中政治教学工作总结
2015/08/13 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
MySQL Server 层四个日志
2022/03/31 MySQL
MySQL如何使备份得数据保持一致
2022/05/02 MySQL