thinkphp 3.2.2 迁移到 5.1 是架构重置,须分步迁移:先通路由、再保数据、最后稳视图;目录结构由 application/ 改为 app/ 且全小写,命名空间同步调整;控制器和模型文件后缀改为 .php、去掉 controller/model 后缀及 .class.php;废弃 m/d 函数,改用 db 类或模型实例并显式区分 isupdate;模板路径移至 app/模块/view/,扩展名改为 .php,移除 public 等常量,改用 url() 或相对路径;配置改用 config() 函数,u() 替换为 url()。

ThinkPHP 3.2.2 迁移到 5.1 不是版本微调,而是架构重置。目录结构、命名空间、类加载、模板解析、数据库操作方式全部重构,硬覆盖或简单替换文件必然失败。必须按模块分步迁移,先通路由、再保数据、最后稳视图。
目录与命名空间强制对齐
TP3.2 的 application/ 目录需整体映射为 TP5.1 的 app/;原 application/Home/Controller/ 要改为 app/home/controller/(注意全小写),命名空间同步从 namespace Home\Controller; 改为 namespace app\home\controller;。模型同理:application/Common/Model/ → app/common/model/,命名空间 app\common\model。
控制器类名后缀必须去掉 Controller 和 .class.php,例如 IndexController.class.php 改为 Index.php,类定义从 class IndexController extends Controller 改为 class Index extends \think\Controller。模型文件同理,UserModel.class.php → User.php,继承 \think\Model。
数据库与模型操作全面重写
TP3.2 中的 M('user')、D('User') 在 TP5.1 中已废弃,必须改用模型实例或 Db 类:
- 查询:用
Db::name('user')->where('id', 1)->find()或UserModel::get(1)(需先定义模型类) - 新增:模型中用
$user = new UserModel(); $user->data($data)->save();,或Db::name('user')->insert($data) - 更新:禁用
save()模糊调用,显式区分场景:->isUpdate(true)->save($data)或->isUpdate(false)->save($data) - 删除:不再支持
M('user')->delete(1),改用Db::name('user')->delete(1)或模型UserModel::destroy(1)
模板与静态资源路径调整
TP3.2 默认模板路径是 application/模块名/View/主题名/控制器名/方法名.html,TP5.1 统一为 app/模块名/view/控制器名/方法名.php(注意扩展名是 .php,非 .html),且取消了 default 子目录层级——原 application/Index/View/default/Index/index.html 需移至 app/index/view/index/index.php。
模板中所有 __PUBLIC__、__CSS__ 等系统常量已被移除,统一改用 {:url('public/')} 或直接写相对路径 /static/css/app.css。入口 public 目录下的 Public/ 文件夹建议重命名为 publics/(避免与框架 public 冲突),并在模板中同步更新引用路径。
配置与函数调用方式变更
TP3.2 的 CONF 常量和 C() 函数失效,TP5.1 使用 config() 函数读写配置,如 config('database.hostname');自定义配置文件(如 api.php)需放在 app/config/ 下,并通过 config('api.key') 访问。
助手函数基本保留但部分行为变化:U() 替换为 url(),参数格式为 url('index/index');session()、cookie() 仍可用,但底层已基于 Facade 实现;所有 echo 输出前请确认是否启用 debug 模式,否则可能被框架缓冲拦截。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











