thinkphp 6.0 废弃全部全局助手函数,须改用对象方法或门面调用:参数获取需通过 request 对象,配置/语言/调试等需引入对应门面,数据库操作推荐模型或 db::table(),路由中间件须传完整类名并实现接口。

ThinkPHP 5.1 迁移到 6.0 时,大量全局助手函数被移除或行为变更,直接运行会报“函数不存在”或返回异常结果。核心不是简单找替换,而是理解框架请求生命周期和组件解耦逻辑——所有原生函数调用必须转为对象方法或门面调用。
request()、input() 等参数获取函数
5.1 中的 input()、request()、session()、cookie() 全部废弃,6.0 要求显式使用 Request 对象或对应组件。
- input('id') → $this->request->param('id')(控制器内);非控制器类中用 app('request')->param('id')
- input('post.name') → $this->request->post('name')(不能混用 input('post.x'),需明确方法:post()/get()/put()/delete())
- session('user') → $this->session->get('user');写入用 $this->session->set('key', $val)
- cookie('token') → $this->cookie->get('token');设置用 $this->cookie->set('name', 'val', 3600)
config()、lang()、dump() 等辅助函数
配置读取、语言切换、调试输出等函数不再自动加载,必须引入对应门面并调用静态方法。
- config('database.hostname') → 先 use think\facade\Config;,再 Config::get('database.hostname')
- lang('user.not_found') → 改为 Lang::get('user.not_found'),顶部加 use think\facade\Lang;
- dump($data) → 改为 Debug::dump($data),顶部加 use think\facade\Debug;(注意:不可链式调用)
- url('admin/index') → 不再支持三段式字符串;改用命名路由:url('admin.dashboard'),前提是路由已定义 ->name('admin.dashboard')
数据库与模型相关变更
Db 类操作方式收紧,模型默认启用严格模式,字段校验更严。
- Db::name('user') → 废弃;改用 Db::table('user')(传真实表名,非模型类名)
- 推荐走模型:User::where('id', 1)->find(),模型类需继承 think\Model
- 模型中若字段在数据库中存在但未定义在 $schema 或未开启 auto_write_timestamp,查询可能抛异常,务必核对字段一致性
- 原 mysql_connect() 等函数在 PHP 8+ 已彻底删除,如有残留需全部替换为 Db::query()
路由与中间件注册方式
中间件必须传完整命名空间类名,闭包路由仍可用,但语义更明确。
- 旧写法:Route::get('admin', 'index/index')->middleware('check')
- 新写法:Route::get('admin', 'index/index')->middleware(\app\middleware\Check::class)
- 中间件类需实现 think\MiddlewareInterface,且 handle() 方法签名必须为 public function handle($request, \Closure $next)
- 多应用模式下,路由不再跨应用共享,每个应用的 route/ 目录独立生效
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











