【旧代码整理】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[点我]



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 税务查出假票怎么办 米利财富 投资人怎么办 亲戚被骗去传销怎么办 杭州山姆店怎么办会员 证券没有托管银行怎么办 股票账户被锁定怎么办 英语短文不会读怎么办 你的孩子怎么办 英文 头发掉在地上怎么办 行李箱轮子太响怎么办 货车横拉杆弯怎么办 拉杆轮子坏了怎么办 外拉杆球头旷了怎么办 古早味蛋糕回缩怎么办 孩子迷上嘻哈怎么办 吃扇贝过敏了怎么办 海鲜和杨梅一起怎么办 我买东西没眼光怎么办 兔子身上有跳蚤怎么办 物业不提供发票怎么办 购房发票 不给怎么办 新锐大灯光散不聚怎么办 网络碰到垃圾人怎么办 有人侮辱我家人怎么办 亲人欠网贷还不上现在病重怎么办 亲人欠网贷现在病重怎么办 小孩子大嘴巴病怎么办 小孩子有心胀病怎么办 小孩子有胃痛病怎么办 大修基金用完了怎么办 基金买错了怎么办 基金公司倒闭了怎么办 桔子分期有风险怎么办 想买vivox21没钱怎么办 中介收钱不办事怎么办 手机应用程序几个运行怎么办 网上彩票是骗局怎么办 辞职后不想辞职怎么办 口头辞职后悔了怎么办 纸质承兑丢了怎么办 天天利财倒闭怎么办