ThinkPHP从3.2到8.0的演进主线是:3.2首推模块化与云支持但耦合高;5.0转向面向对象与Composer生态;6.0确立中间件管道与多应用标准;8.0基于PHP 8+全面重铸架构,实现PSR全系兼容、ORM独立及类型安全强化。

想快速了解ThinkPHP从3.2到8.0的底层逻辑变化,又不想被零散的版本公告绕晕?直接看关键节点上的架构取舍与能力继承,比读 changelog 更快抓住演进主线。
3.2:模块化与云平台的首次系统性尝试
2013年底发布的ThinkPHP 3.2,是首个明确以“模块化、驱动化、为云平台而生”为定位的版本。它强制要求PHP 5.3+,首次深度引入命名空间和自动加载机制,让应用目录结构真正具备可拆分性。
路由功能开始支持PATH_INFO与伪静态混合配置,主题动态切换能力落地,图像/验证码/上传等工具类全部重写——这些不是功能堆砌,而是为后续多应用模式埋下伏笔。
【注意】3.2虽提模块化,但控制器与模型仍大量依赖全局函数调用,未形成容器概念,耦合度高,升级路径不平滑。
立即学习“PHP免费学习笔记(深入)”;
5.0:面向对象与Composer生态的全面转向
2015年ThinkPHP 5.0发布,彻底告别面向过程开发范式。所有核心类统一使用命名空间,MVC边界清晰,ORM支持链式查询与事务,验证器、缓存、日志全部组件化。
它首次原生支持Composer,允许通过composer require topthink/think安装,不再依赖手动下载压缩包。助手函数虽保留,但已标注为“非必须”,官方文档开始强调依赖注入的正确姿势。
这一版确立了“约定优于配置”的国内开发者友好路线:数据库表前缀自动识别、控制器方法名映射URL路径、模板文件按规则自动定位——新手30分钟搭出CRUD模块成为可能。
6.0:中间件管道与多应用模式的标准化
第一步:确认项目结构是否已启用多应用目录(app下存在多个子目录如admin、api);
第二步:检查config/app.php中'multi_app' => true是否开启;
第三步:运行php think build生成对应应用的入口文件和基础路由配置。
TP6将中间件从行为扩展升级为PSR-15标准的管道机制,每个请求必须经过Handle→MiddlewarePipeline→Application三段式流转。路由支持注解定义,@route直接写在控制器方法上,无需额外配置文件。
ORM层独立为think-orm包,与框架主体解耦。这意味着你可以单独升级ORM而不影响核心,也为TP8的进一步分离打下基础。
8.0:PHP 8特性驱动的架构重铸
方法一:使用命名参数调用助手函数,例如cache(name: 'user_list', value: $data, expire: 3600),跳过位置参数顺序约束;
方法二:在控制器中直接使用PHP 8.0+属性,例如#[Route('/user/{id}', method: 'GET')]替代注解字符串解析;
方法三:启用构造器属性提升简化模型定义:class User extends Model { public function __construct(public int $id, public string $name) { parent::__construct(); } }。
TP8不再兼容PHP 7.x,强制要求PHP 8.0+。这使得Match表达式、JIT编译优化、联合类型声明、枚举类等特性可直接融入框架内核。日志系统严格遵循PSR-3,缓存驱动统一适配PSR-16,HTTP处理层完全对接PSR-7/PSR-15/PSR-17。
【关键前提】TP8的think-orm已升至3.0+,旧版模型中使用的protected $type = ['create_time' => 'timestamp']写法必须改为protected $casts = ['create_time' => 'datetime'],否则时间字段序列化失败。



















