【旧代码整理】uri路由处理部分
来源:互联网 发布:wine源码 编辑:程序博客网 时间:2024/06/05 02:18
一个简单的php mvc框架 的 代码说明,uri路由处理 部分:
/project/application_www/public/index.php
接收到 除静态文件外的 所有请求,然后 requeire application_admin/init.php 和 /project/init.php 和 /project/run.php
<?phpdefine('PUBLIC_PATH',dirname(__file__));require '../init.php';require APPLICATION_PATH . '/../run.php';?>
requeire application_admin/init.php
看上去很简单。这里是放局部的初始化配置信息是,但是暂无东西配置,直接require最高级 init.php了
<?phpdefine('APPLICATION_PATH',dirname(__file__));require APPLICATION_PATH . '/../init.php';
/project/run.php
run.php 负责根据 uri 解析出 controller 和 action 、以及params,然后调用对应/project/controller/目录中的contrller class文件,执行action。
<?php$uri = $_SERVER['REQUEST_URI'];$_SGLOBAL = array();$route = Model_Route::get($uri);if(empty($route['controller'])){_Error_404();exit;}else{$_SGLOBAL['controller'] = $route['controller'];$_SGLOBAL['action'] = $route['action'];if(isset($route['params'])){$_SGLOBAL['params'] = $route['params'];}}$file = APPLICATION_PATH . '/controller/' . $_SGLOBAL['controller'] . '.php';if(file_exists($file)){require $file;}else{echo "file not found:{$file}";die();_Error_404();}$class = "Controller_{$_SGLOBAL['controller']}";$action = "action_{$_SGLOBAL['action']}";$obj = new $class;$obj->$action();
/project/application_www/route.php
uri 的路由配置文件;
<?php$_route = array("index_index" => array('url' => '/','controller' => 'index','action' => 'index',),"user_login" => array('url' => '/login','controller' => 'user','action' => 'login',),"user_logout" => array('url' => '/logout','controller' => 'user','action' => 'logout',),"user_setting" => array('url' => '/user_setting/<act>(-<uid>)','controller' => 'user','action' => 'setting','params' => array('default' => array('act'=>'view','uid'=>0),'pattern' => array('act'=>'\w+','uid'=>'\d+'),),),?>
给route举个栗子:
浏览器访问 http://www.domain.com/user_setting/view/1001 时,nginx将除静态和图片文件以外的所有request发到/project/application_www/public/index.php
1、index.php 接收到请求,加载init.php 和 run.php
2、init.php 初始化必要的基本配置后,run.php开始解析uri,调用controller的action user.php 的 method:setting(),并且传入参数act=view,uid=1001,
run.php解析的参数,可以由/project/library/function.php 的 function _get() 取得
/project/run.php 的 Model_Route::get($uri) class,位于 /project/model/route.php[点我]
- 【旧代码整理】uri路由处理部分
- 【旧代码整理】uri路由处理的重要组成部分 Model_Route
- 【旧代码整理】代码说明 /project/init.php 部分
- 【旧代码整理】代码说明 /project/run.php 部分
- 【旧代码整理】/project/library/function.php 基本function部分
- 【旧代码整理】controller继承Action渲染输出html部分
- 【旧代码整理】一个处理图片的class,拼接图片,在图片上下加文字
- 【旧代码整理】PHP生成二维码
- 【旧代码整理】Nodejs的另类用法
- URI 整理
- c基础部分代码整理
- 【旧代码整理】一个PHP操作mysql的class类
- 【旧代码整理】我是这么用Redis的,哈哈哈
- YII管理后台权限分配关于整理旧代码
- ThinkPHP路由模式-URI
- 部分matlab处理图像代码
- 图片处理的部分代码
- 部分matlab处理图像代码
- 【9202】车厢重组
- React组件的生命周期
- 代码审计之SpringMVC框架的安全攻防问题研究
- mysql 日期操作 增减天数、时间转换、时间戳
- 打印蛇形矩阵
- 【旧代码整理】uri路由处理部分
- 面试题汇总
- apply函数处理数据的方式
- 私有网络地址
- POJ 3678 Katu Puzzle
- 2016夏季练习——二分
- 设备节点和设备堆栈
- 购物车与商城订单的关系以及技术实现深入分析
- linux关闭按键报警声