记录:
1,启用多应用模式,需要安装拓展:
composer require topthink/think-multi-app
删除原有的controller文件 (必须删),新建自己的应用目录,修改config/app.php中的 开启多应用自动加载,auto_multi_app => true; 如果没有的话不用更改,然后就可以正常访问了
2,模板引擎类不再内置到核心框架,需要安装拓展:
composer require topthink/think-view
3,动态更改配置参数的用法已经废弃,下面的用法不再支持:
//不再支持此写法
config('app.show_error_msg',false);
4,取消 了 think\Controller 类,原来的success
、error
、redirect
和result
方法需要自己在基础控制器类里面实现,fetch
/display
/assign
等视图方法,必须改为调用think\facade\View
类,也可以使用view
助手函数方式。
View::assign('name', $name);
View::fetch();
或
view();
5,Db
类不再是静态类,需要使用think\facade\Db
门面进行静态代理。
\think\facade\Db::name('user')->find();
6,数据库配置文件或者connect
方法取消DSN
数据库配置定义方式,全部采用数组方式配置定义。
//tp5
Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8')->table('user')->find();//需改为tp6要求写法
Db::connect('db_config') //并且按照新版的规范在数据库配置文件中增加db_config连接信息。->table('user')->find();
7,insert
/insertGetId
/insertAll
方法的第二个replace
参数已经取消,改为使用replace
方法。
//tp5
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->insert($data, true);//tp6写法
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->replace()->insert($data);
8,取消了db和model助手函数。
9,取消Query类的setField
方法,请直接使用data
方法或者update
方法。
10,取消Query类的setInc
/setDec
方法,统一使用inc
/dec
方法替代。例如:
Db::name('user')->where('id', 1)->inc('exp')->dec('score')->update();
11,取消查询eq/neq/gt/lt/egt/elt
表达式,例如:
//tp5可用
Db::name('user')->where('id', 'egt', 1)->where('status', 'neq' ,1)->select();//tp6需改为:
Db::name('user')->where('id', '>=', 1)->where('status', '<>' ,1)->select();
12,无论使用Db
类还是模型类查询,全部统一使用find
/select
方法,取消了之前模型类额外提供的get
/all
方法。同时取消的方法还包括getOrFail
/allOrFail
。
13,模型的自动完成功能已经取消,请使用模型事件代替。
14,模型类的save
方法不再支持where
参数。
15,查询缓存调整:如果希望在更新和删除之后自动清除之前的查询缓存,必须在cache
方法中传入key值而不是true
。
16,行为和Hook
已经用新版的事件机制替代,需要把你的行为改成事件响应或者中间件(部分请求拦截的行为可以直接改为中间件)。
17,系统Facade
类库的别名已经取消,因此不能再使用:
use Route;
Route::rule('hello/:name', 'index/hello');//改为:
use think\facade\Route;
Route::rule('hello/:name', 'index/hello');
18,Session
新版默认不开启,必须为在全局中间件定义文件中添加 'think\middleware\SessionInit'
原来的Session::get()
可以获取全部的Session数据必须改成 Session::all()
19,判断查询的数据集是否为空:
$res = (new UserModel())->where([['numid','<>',0],['username','like','zhang%']])->field('numid,username')->select();
if($res->isEmpty()){echo '未查到1';
}else{echo '<pre>';print_r($res);
}
20,不要在控制器中使用包括die
、exit
在内的中断代码。如果你需要调试并中止执行,可以使用系统提供的halt()
助手函数。
21,获取当前应用、控制器、方法:
app('http')->getName();
request()->controller(true);//加true返回小写
request()->action();
22,框架默认没有设置任何全局过滤规则,你可以在app\Request对象中设置filter全局过滤属性:
// 获取get变量 并且不进行任何过滤 即使设置了全局过滤
Request::get('name', '', null);
23,TP6.0改进了图形验证码插件,支持算术验证码,开启算术验证码:
打开 config/captcha.php
// 是否使用算术验证码'math' => true,