tp5 不能直接升级到 tp8,必须经 tp6.1 过渡;需重写 input/request 调用、替换 db::name() 为 table() 或模型、改路由和中间件注册方式、移除 dump 等全局函数,并修复 php 8 兼容语法。

直接升级 TP5 到 TP8 会大量报错,不是配置问题,是函数、类、调用方式全变了——不改代码就启动不了。
input() 和 request() 调用必须重写
TP8 中 input() 不再自动合并 GET/POST/PUT 数据,默认只读 raw body;request() 在构造函数或静态上下文中调用会返回 null,不是空数组,是彻底不可用。
- 把所有
input('name')替换为$this->request->param('name')(控制器内)或app('request')->param('name')(非控制器类中) - 原
input('post.email')改成$this->request->post('email'),类型方法必须显式指定,不能靠点号路径推导 -
input('id/d', 0, 'intval')的第三参数过滤器已被移除,硬编码会静默失效,必须拆解为$this->request->param('id', 0, 'intval') - 全局搜索
request(),确认没在__construct()、静态方法、Traits 或配置文件里调用,否则运行时直接null导致后续逻辑崩
Db::name() 必须换成 table() 或模型调用
Db::name('user') 在 TP8 中已不存在,框架不再做“模型名 → 表名”的自动映射,传字符串别名会报 Call to undefined method。
- 临时替换:用
Db::table('tp_user'),注意传的是真实表名,不是模型类名,也不是带前缀的别名 - 推荐方案:建模型类
app\model\User,继承think\Model,然后用User::where('id', 1)->find() - 模型类必须显式声明主键类型:
protected $pkType = 'int';,否则find(1)可能查不到数据且无提示 - 若模型定义了
$table,必须同步定义$name,且声明顺序为$name在前、$table在后,中间不能有空行
路由和中间件注册方式彻底变更
TP8 路由系统重写,字符串风格控制器绑定(如 'index/index')被废弃,中间件别名也失效,不改就 404 或中间件不执行。
- 旧路由
Route::get('admin', 'admin/Index/index')必须改为Route::get('admin', [app\controller\Admin\Index::class, 'index']) - 中间件注册必须传完整命名空间类名:
->middleware(\app\middleware\Auth::class),字符串'auth'会静默跳过 - 404 页面只能通过
Route::miss()配置,其他任何config/app.php里的设置对 404 都无效 - 若需兼容末尾斜杠(如
/user/123/和/user/123),必须在config/route.php中设'route_complete_match' => false
dump()、cookie()、session()、config() 全部失效
这些全局助手函数在 TP8 中被移除,不是弃用,是彻底删了。不加 use、不换调用方式,就是 Fatal error: Call to undefined function。
-
dump($data)→ 先use think\facade\Debug;,再用Debug::dump($data)(注意:不可链式调用,Debug::dump($a)->dump($b)会报错) -
cookie('token')→$this->cookie->get('token');session('user')→$this->session->get('user') -
config('app.debug')仍可读,但首次调用后永久缓存,改config/app.php不生效,必须清runtime/cache/ -
config('app.debug', true)写操作被禁止,会抛think\Exception;动态配置必须走.env+Env::get('app_debug')
最易被忽略的是 PHP 8 兼容性问题:TP5.1 原生不支持 PHP 8,each()、create_function()、$str{0} 这些语法在 PHP 8 下直接 fatal error,必须手动修 core 文件,不能只改业务代码。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











