tp5完全开发手册
TP5的完全官方全称是ThinkPHP 5,最后一个小版本停在5.1.41。手册这个框架2016年发布,完全2019年底官方宣布停止维护,手册但直到今天,完全国内仍有大量中小项目跑在它上面。手册我手上一个日活三万的完全后台系统,去年才刚从5.0升到5.1,手册升级过程只花了半天——这恰恰说明TP5的完全稳定性和兼容性做得不错,也说明它的手册生命周期比官方声明的要长得多。
安装TP5最省事的完全方式是Composer,一条命令搞定:composer create-project topthink/think tp5。手册但很多人卡在第一步,完全因为默认源太慢。手册换成阿里云镜像,完全速度立刻起飞。装完之后目录结构很清晰,application放业务代码,public是入口,config管配置,route定义路由。我习惯把application改名为app,纯粹是个人偏好,少敲几个字母。
路由是TP5的亮点。支持规则路由、资源路由、闭包路由,还能用注解。比如Route::get('user/:id','index/User/read'),访问/user/5就自动映射到User控制器的read方法,参数id=5。比原生PHP的$_GET优雅太多。但有个坑:路由缓存。开发阶段千万别开route_check_cache,否则改路由不生效,你会怀疑人生。我踩过两次,后来学乖了,只在生产环境开。
模型层用起来顺手。继承think\Model,自动获得增删改查、软删除、自动时间戳、字段类型转换。关联查询尤其舒服,hasOne、hasMany、belongsTo写清楚,with预载入一用,N+1问题直接消失。有次同事写了个循环里查关联表,页面加载八秒。我改成with('profile'),降到两百毫秒。他愣了半天,说这玩意比手写SQL还快。
模板引擎沿用了ThinkPHP自己的ThinkTemplate,语法像Smarty但更简洁。{ $name}输出变量,{ :url('index/index')}生成链接,{ volist name="list" id="vo"}循环。上手门槛低,前端改起来也不费劲。不过别在模板里写复杂逻辑,否则后期维护就是灾难。我见过有人在模板里嵌套三层if加foreach,改一个条件得翻半天。
数据库迁移和填充是TP5后期才完善的。用think-migration扩展,可以像Laravel那样用代码管理表结构。php think migrate:run执行迁移,php think seed:run填充测试数据。团队协作时特别有用,新人拉下代码,两条命令环境就搭好了。但注意,迁移文件里的up和down要写对称,否则回滚时哭都来不及。
性能方面,TP5默认开了app_debug,生产环境记得关。关掉之后页面响应能快三成。缓存用Redis或Memcached,配置里改cache驱动就行。查询缓存用cache()方法,但别滥用,数据一变缓存就脏。我一般只缓存那些一天都不变的基础数据,比如城市列表、配置项。
社区现在冷清了不少,官方论坛帖子更新停在两年前。但GitHub上top-think/framework仓库还有零星PR。遇到问题,翻源码比搜答案快。TP5的源码注释写得清楚,think\db\Query类里每个方法都有说明。我调试复杂查询时,直接dump($query->getLastSql()),比猜强一万倍。
如果你现在要开新项目,我不推荐TP5。但如果你维护老系统,或者接了个外包单子指定用TP5,那这份手册够你撑一阵子。它不完美,文档有错别字,某些设计也过时了,但胜在简单直接。一个框架能让人不查文档就写出增删改查,它就是合格的。TP5做到了。
(责任编辑:探索)














