【旧代码整理】uri路由处理的重要组成部分 Model_Route
来源:互联网 发布:mac apowersoft 编辑:程序博客网 时间:2024/05/21 08:44
一个简单的php mvc框架 的 代码说明,/project/model/route.php uri路由处理的重要组成部分:
/project/model/route.php
<?php//当配置好__autoload后,直接Model_Route:get($uri)即可调用class Model_Route {protected static $_instance = null;public static function instance(){if(self::$_instance == null){self::$_instance = new self();}return self::$_instance;}/* * 根据配置的route规则(如:/project/application_www/route.php), * 从 uri 解析出 controller name、action name、params * 因为要伪静态嘛,所以写了这个,纯属兴致。不过,还挺好用。*/public static function get($uri){global $_route;$return = array();foreach($_route as $v){$has_params = preg_match_all('/\<(.*?)\>/',$v['url'],$m);$pattern = str_replace(array('?','(',')'),array('\?','(:?','){0,1}'),$v['url']);if($has_params){$param_keys = $m[1];foreach($param_keys as $p_k){$p_t = $v['params']['pattern']["{$p_k}"];$s_p = "(?P<{$p_k}>{$p_t}?)";$pattern = str_replace("<{$p_k}>",$s_p,$pattern);}}$pattern = str_replace(array('/','.'),array('\\/','\\.'),$pattern);$uri = preg_replace('/\?.*?$/','',$uri);$is_match = preg_match('/^'.$pattern.'$/',$uri,$matches);if($is_match){$return['controller'] = $v['controller']; $return['action'] = $v['action'];if(isset($v['params'])){foreach($v['params']['default'] as $p_k => $p_v){if(isset($matches["{$p_k}"])){$return['params']["{$p_k}"] = $matches["{$p_k}"];}else{$return['params']["{$p_k}"] = $p_v;}}}if(isset($v['html'])){$return['html'] = $v['html'];}break;}}return $return;}/* * 这个method是和上面的相反的过程,根据配置的route规则, * 输入contrller name、action name,$params,得到uri。 * 但这种情况很少碰到,一个uri定下来,就基本不会改了, * 为什么不直接写uri,却要调用method?直接写uri好了。 * 空着!*/public static function uri($controller,$action,array $params){}}
0 0
- 【旧代码整理】uri路由处理的重要组成部分 Model_Route
- 【旧代码整理】uri路由处理部分
- wintegra 芯片的重要组成部分-软件侧
- Android应用程序开发的四个重要组成部分
- Android应用程序开发的四个重要组成部分
- oracle数据库系统的重要组成部分
- 【旧代码整理】代码说明 /project/init.php 部分
- 【旧代码整理】代码说明 /project/run.php 部分
- 【旧代码整理】/project/library/function.php 基本function部分
- 【旧代码整理】controller继承Action渲染输出html部分
- 【旧代码整理】Nodejs的另类用法
- 【旧代码整理】一个处理图片的class,拼接图片,在图片上下加文字
- Java虚拟机(二)--java虚拟机的作用和重要组成部分
- 金代文化是中华民族文化的重要组成部分
- 【旧代码整理】一个PHP操作mysql的class类
- 【旧代码整理】我是这么用Redis的,哈哈哈
- 可行性研究(软件计划阶段重要组成部分)
- 图片处理的部分代码
- WebGIS实现在线要素编辑之ArcGIS Server 发布Feature Service 过程解析
- jquery和thinkphp利用formData属性ajax上传并,添加水印,裁剪,实现预览
- 20. 利用Veeam ONE监控vSphere虚拟化平台(Veeam ONE安装及配置)
- Arbitrage(bellman,最长路径)
- Unity集成内嵌网页插件-支持Android和IOS
- 【旧代码整理】uri路由处理的重要组成部分 Model_Route
- WebGIS实现在线要素编辑之ArcGIS Server 发布Feature Service 过程解析
- cython,加速python,保护代码(3):扩展文件 .pxd
- 四 skylable集群管理
- bootstrap模态框
- xml解析 SAX
- 剑指offer-5-面试36:数组中的逆序对(时间效率和空间效率的平衡)
- Oracle expdp/impdp导出导入命令及数据库备份
- L1-009. N个数求和