继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

ThinkPhp5.0开发时一些总结(3)

大叔_fighting
关注TA
已关注
手记 81
粉丝 44
获赞 400

路由:thinkphp5.0的路由与以前版本有着颠覆性的改变
路由在框架中的作用打个比方的话,路由好比是WEB应用的总调度室,对于访问的URL地址,路由可以拒绝或者接受某个URL请求,并进行分发调度,而且还有一个副作用是因为路由规则可以随意定义,因此可以让你的URL请求地址更优雅,因为不会暴露实际的URL地址,也就意味着更安全,5.0的路由不仅仅只是支持路由到控制器的操作方法,甚至可以路由到任何的类或者闭包。
// 静态路由规则
Route::rule('hello','index/Index/hello');
// 动态路由规则
Route::rule('hello/:name','index/Index/hello');
Route::any('hello/:name', 'index/index/hello', [
'ext' => 'html',
'method' => 'get',
], ['name' => '[A-Za-z0-9]+']);
Route::rule('路由规则','路由地址','请求类型','路由参数(数组)','变量规则(数组)');

// 设置路由配置文件列表
'route_config_file' => ['home','admin'],

'blog/:id'=>'blog/read?status=1&app_id=5',上面的路由规则定义中额外参数的传值方式都是等效的。status和app_id参数都是URL里面不存在的,属于隐式传值

全局变量规则
// 设置name变量规则(采用正则定义)
Route::pattern('name','\w+');
// 支持批量添加
Route::pattern([
'name' => '\w+',
'id' => '\d+',
]);
支持使用行为对路由进行检测是否匹配,如果行为方法返回false表示当前路由规则无效。
前置行为检测:Route::get('user/:id','index/User/read',['before_behavior'=>'\app\index\behavior\UserCheck']);

路由地址定义:
定义方式 定义格式
方式1:路由到模块/控制器 '[模块/控制器/操作]?额外参数1=值1&额外参数2=值2...'
方式2:路由到重定向地址 '外部地址'(默认301重定向) 或者 ['外部地址','重定向代码']
方式3:路由到控制器的方法 '@[模块/控制器/]操作'
方式4:路由到类的方法 '\完整的命名空间类::静态方法' 或者 '\完整的命名空间类@动态方法'
方式5:路由到闭包函数 闭包函数定义(支持参数传入)

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP