thinkphp项目稳定可维护的核心是严格对齐psr标准,tp8中psr断链会导致中间件不执行、日志写入失败、容器注入异常;目录与文件命名须全小写下划线(类文件除外,须大驼峰且与类名一致);类、方法、属性、函数、变量命名按角色区分风格;psr接口必须真实实现,禁用旧日志接口;数据库表名、字段、配置项、环境变量均须小写或全大写下划线。

ThinkPHP 项目要真正稳定、可维护、易协作,核心不是功能多强,而是代码是否严格对齐 PSR 标准。这不是“加分项”,而是从 TP6 开始的硬性要求——尤其在 TP8 中,PSR 断链直接导致中间件不执行、日志写不进、容器注入失败。
目录与文件命名必须小写+下划线
所有目录名、配置文件、视图模板、路由定义、函数库文件,一律使用小写字母加下划线,比如:
– app/index/controller/User.php(类文件,驼峰)
– config/database.php(配置文件,小写下划线)
– view/index/index.html(模板,全小写)
– route/app.php(路由文件,小写下划线)
注意:类文件是唯一例外,必须驼峰且首字母大写,且与类名完全一致;其他所有非类文件都不允许驼峰或大写。
类、方法、变量命名按角色区分
不同语义元素用不同风格,避免混用:
- 类名(含控制器、模型、服务):大驼峰,如 User、OrderService、PayCallback
- 方法名(含控制器动作、模型方法):小驼峰,如 getUserName、saveWithLog、isEmailValid
- 属性名(含模型字段映射、私有状态):小驼峰,如 tableName、cacheKey、isLocked
- 函数名(全局函数,应尽量少用):小写+下划线,如 array_to_tree、get_client_ip
- 变量名:一律小写+下划线或小驼峰,单数优先,复数用 $userList、$orderItems 等明确数量词
PSR 接口实现不能只装样子
TP8 要求中间件、日志、请求响应等必须真实实现对应 PSR 接口,否则运行时会静默失效:
-
中间件必须实现 \Psr\Http\Server\MiddlewareInterface,且 process() 方法签名必须为:
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface -
日志调用优先用依赖注入:
public function __construct(private \Psr\Log\LoggerInterface $logger) { },再调 $this->logger->info();
禁用 think\Log::write() 等旧接口,已移除 -
检查 PSR 包是否齐全:运行 composer show | grep psr,必须同时存在:
psr/log、psr/http-message、psr/container、psr/http-server-middleware、psr/simple-cache、psr/http-factory
数据库与配置命名保持统一小写下划线
数据表、字段、配置项、环境变量,全部小写+下划线,拒绝驼峰和中文:
- 表名:think_user、sys_config(不是 ThinkUser 或 user_info)
- 字段名:user_name、is_deleted、created_at(不以 _ 开头)
- 配置键:app_debug、cache_type、database.hostname
- 环境变量:APP_ENV、DB_PORT(全大写+下划线)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











