ThinkPHP学习-路由的使用测试用例源码
2017-03-09 00:00
260 查看
一个完整的URL例如:
http://域名/index.php/模块名/控制器名/方法名,则上面的URL对应的PHP文件为:
/application/demo/controller/Goods.php 里的list()方法。
下面通过路由来缩短URL。
路由配置有两种方式,一个是调用Route类的静态方法,一个是/application/route.php里return 数组,官方文档说return数组的效率低,那就同意调用Route类的静态方法吧。
源码贴一下,一个route.php, 四个控制器,Goods.php, Blog.php, User.php, Order.php.
http://tp.i/index.php/demo/goods/list
http://域名/index.php/模块名/控制器名/方法名,则上面的URL对应的PHP文件为:
/application/demo/controller/Goods.php 里的list()方法。
<?php namespace app\demo\controller; class Goods { public function list() { return '这是list页面'; } } ?>
下面通过路由来缩短URL。
路由配置有两种方式,一个是调用Route类的静态方法,一个是/application/route.php里return 数组,官方文档说return数组的效率低,那就同意调用Route类的静态方法吧。
源码贴一下,一个route.php, 四个控制器,Goods.php, Blog.php, User.php, Order.php.
<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: liu21st <liu21st@gmail.com> // +---------------------------------------------------------------------- use \think\Route; //静态,将首页http://tp.i路由到/demo/controller/Goods.php里的index()方法。 Route::get('/', 'demo/Goods/index'); //静态,将http://tp.i/goods/list 路由到 /demo/controller/Goods.php里的list()方法。 //最前面都不要加 / Route::get('goods/list', 'demo/Goods/list'); //静态+动态,将http://tp.i/goods/lang123 路由到 /demo/controller/Goods.php里的detail()方法,将id作为参数传入方法。 Route::get('goods/:var', 'demo/Goods/detail'); //静态+动态[可选] Route::get('show/[:var]', 'demo/Goods/show'); //完全匹配,可以匹配http://tp.i/3,但不能匹配http://tp.i/3/4 Route::get('full/:var$', 'demo/Goods/full'); //额外传参 Route::get('param', 'demo/Goods/param?a=1'); //路由参数,限制URL后缀,匹配http://tp.i/suffix/3.html //全部参数见手册 Route::get('suffix/:var', 'demo/Goods/suffix', ['ext'=>'html']); //变量规则, var变量只能匹配数字,字母不行。 Route::get('rule/:var', 'demo/Goods/rule', [], ['var'=>'\d+']); //重定向,http://tp.i/baidu 重定向到百度 Route::get('baidu', 'http://www.baidu.com'); //路由分组 Route::group('blog', [ ':id' => ['demo/Blog/getById', ['ext'=>'html'], ['id'=>'\d+']], ':name' => ['demo/Blog/getByName', ['ext'=>'html'], ['id'=>'\w+']] ]); //路由分组,公共属性提出来,测这个的时候将上面的分组注释掉 Route::group('blog', [ ':id' => ['demo/Blog/getById', [], ['id'=>'\d+']], ':name' => ['demo/Blog/getByName', [], ['id'=>'\w+']] ], ['ext'=>'html']); //快捷路由,一次定义,所有的方法都能访问,方法名以get,post,put,delete等开始 //通过http://tp.i/user/phone http://tp.i/user/address Route::controller('user', 'demo/User'); //路由别名,与快捷路由的区别是直接访问方法名 //测试的时候把快捷路由注释掉,http://tp.i/user/getphone http://tp.i/user/getaddress //可以添加黑名单 //Route::alias('user', 'demo/User', ['except'=>'getname']); //资源路由,一次定义,固定的几个方法,(index,create,save,read,edit,update,delete) //访问URL为 http://tp.i/order/create http://tp.i/order http://tp.i/order/7 http://tp.i/order/7/edit Route::resource('order', 'demo/Order'); /* return [ '__pattern__' => [ 'name' => '\w+', ], '[hello]' => [ ':id' => ['index/hello', ['method' => 'get'], [ 7fe8 'id' => '\d+']], ':name' => ['index/hello', ['method' => 'post']], ], ]; */
<?php namespace app\demo\controller; class Goods { public function index() { return '这是首页。'; } public function list() { return '这是列表页。'; } public function detail($var) { return '这是详情页,你传入的var是' . $var; } public function show($var=0) { if ($var == 0) { return '你没有传入参数,默认是0'; } else { return '你输入的参数是:' . $var; } } public function full($var) { return '这是测试完全匹配的页面。'; } public function param($a) { return '这是测试额外传参,这里传递了一个隐形的变量a,值为:' . $a; } public function suffix($var) { return '这是测试后缀名,只有输入.html结尾才能匹配成功.'; } public function rule($var) { return '这是测试变量规则,只能输入数字,输入字母不可以。'; } } ?>
<?php namespace app\demo\controller; class Blog { public function getById($id) { return '这是测试分组路由,通过id访问,只能是数字'; } public function getByName($name) { return '这是测试分组路由,通过name访问,只能是字母'; } } ?>
<?php namespace app\demo\controller; class User { public function getPhone() { return '这是测试快捷路由,通过http://tp.i/user/phone访问'; } public function getAddress() { return '这是测试快捷路由,通过http://tp.i/user/address访问'; } public function getName() { return '这是测试快捷路由,通过http://tp.i/user/name访问'; } } ?>
<?php namespace app\demo\controller; class Order { public function index() { return '这是测试资源路由,这是首页'; } public function create() { return '这是测试资源路由,这是创建页'; } public function read($id) { return '这是通过id来读取页面,你输入的id是:' . $id; } public function edit($id) { return '这是通过id来edit页面,你输入的id是:' . $id; } } ?>
相关文章推荐
- ThinkPHP使用-控制器的测试用例源码
- 【测试】学习使用mocha(摩卡)编写测试用例-常用命令
- lua开源测试框架busted源码学习(二)--代码框架分析和用例执行流程
- 使用netty自定义rpc通信框架(提供测试用例和源码)
- 使用组合改进软件测试用例的生成3
- NUnit的使用(3)——更多的测试用例
- UML学习手记(二):用例分析之使用叙述
- 针对ASP.NET页面实时进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)
- 程序测试程序(配合游戏及学习控制管理器使用)
- 针对ASP.NET页面实时进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)
- 使用组合改进软件测试用例的生成4
- 学习NUnit测试3(比较详细的NUnit2.0使用说明[转])
- 软件测试用例设计方法的学习
- 高效测试用例的BUG学习笔记
- 使用组合改进软件测试用例的生成
- 为什么要使用测试用例
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )(二)
- 使用组合改进软件测试用例的生成
- Struts 1 学习笔记-2-2(Struts标签的测试用例)
- 学习使用 doxygen 生成源码文档