游客发表
ThinkPHP 最让人记住的后端一点,是框架它把“能跑起来”这件事做得特别快。下载框架,后端配好数据库,框架写个控制器,后端页面就出来了。框架2010 年前后国内大量中小型项目用它,后端不是框架没有理由的——那时候很多 PHP 开发者连 Composer 都还没用顺,ThinkPHP 已经把目录结构、后端路由、框架模板引擎全打包好了。后端
我最早接触的框架是 3.2 版本。那会儿它的后端文档写得像一本操作手册,每个功能点都配着示例代码,框架照着抄就能用。后端单入口文件 index.php 里一行 ThinkPHP::run() 启动整个应用,简单直接。但简单背后有代价。3.2 的自动加载机制比较粗糙,项目一大,文件包含路径就乱。有次我接手一个二十多个模块的老项目,光是理清 Common 目录下那些公共函数就花了一整天。
转到 5.0 之后,框架开始往规范靠。命名空间严格了,Composer 加载成了标配,路由也支持闭包和资源路由。这个版本算是 ThinkPHP 的分水岭——之前是“能快速出活”,之后是“能扛住中型项目”。我印象很深的是 5.0 的查询构造器,链式调用写起来很顺:Db::name('user')->where('status', 1)->order('id', 'desc')->paginate(10),一行搞定分页。比手写 SQL 拼接舒服太多。
但 5.0 的坑也不少。比如模型关联的预载入,文档里写得轻描淡写,实际用的时候 with 和 withJoin 的区别、嵌套关联的写法,得反复试。还有验证器,规则和场景混在一起,项目复杂了之后验证逻辑散落在各处。我见过一个项目把验证规则全塞在控制器里,一个方法两百多行,改起来想砸键盘。
6.0 版本最大的变化是强类型和 PSR 标准。容器绑定、门面模式、中间件,这些 Laravel 里早就有的东西,ThinkPHP 终于跟上了。中间件写起来很清爽,一个 handle 方法,$next($request) 往下传,逻辑清晰。但 6.0 的文档质量明显下滑,很多地方只有函数签名没有示例,社区里抱怨不少。有次我想找 think-orm 里 whereRaw 的绑定参数写法,翻遍官方文档没找到,最后在 GitHub issue 里看到有人贴了代码。
8.0 我没深入用,但看更新日志,主要在性能优化和 PHP 8 兼容上做文章。OPcache 预热、注解路由这些,方向是对的。不过说实话,ThinkPHP 的生态和 Laravel 比还是差一截。扩展包少,社区活跃度也一般。很多包停更在 5.1 时代,升级框架就得自己重写。
选不选 ThinkPHP,得看场景。外包项目、内部管理系统、快速原型,它依然是好选择——中文文档全,上手快,国内服务器环境兼容性好。但如果是长期维护的产品,或者团队里有人习惯 Laravel 那套,迁移成本得算清楚。我个人的判断是:小项目用它省时间,大项目用它得做好自己填坑的准备。框架本身不差,差的是围绕它的工具链和社区惯性。
友情链接