告别代码风格混乱!PHP PSR全规范梳理:编码标准、日志接口、自动加载落地教程
简介:还在为PHP项目代码风格不统一、类加载混乱头疼?本文详解PHP-FIG制定的PSR全系列规范,从基础PSR-1编码约定、PSR-4 Composer自动加载原理,到替代PSR-2的PSR-12现代代码风格,再到PSR-3日志接口、PSR-7 HTTP消息等进阶规范。搭配实战示例,帮助开发者快速掌握标准规则,提升代码可读性与跨框架互操作性,降低团队协作维护成本
PSR(PHP Standard Recommendations)是 PHP 社区制定的PHP 标准推荐规范
目的:统一 PHP 代码风格、接口规范、自动加载规则等,提升可读性和可维护性。
一、PSR-1:基础编码规范(必须掌握)
1、标签规范
- 纯 PHP 代码文件,只使用 <?php ?> 或 <?= 短标签;
- 纯 PHP 文件末尾必须省略闭合标签 ?>(防止输出多余空白字符)
2、命名规范
- 类名:大驼峰式(StudlyCaps),如 UserController、OrderService。
- 常量:全大写 + 下划线分隔,如 STATUS_SUCCESS、DB_HOST
- 方法名:小驼峰式(camelCase),如 getSignParams()、saveOrder()
3、文件与命名空间:
- 命名空间和类名必须遵循自动加载规范(PSR-4)
- 一个 PHP 文件只定义一个类,不允许一个文件写多个类
二、PSR-2:代码风格规范(已废弃,替代为 PSR-12)
PSR-2 2019年后已经被 PSR-12 完全取代,现代开发直接用 PSR-12 即可
三、PSR-3:定义日志接口规范(通用日志标准)
8 个日志级别(必须记住)
// 日志级别从低到高
debug(调试详细信息)
info(普通日志)
notice(普通提示)
warning(警告)
error(运行时错误)
critical(严重错误)
alert(必须立即处理)
emergency(系统不可用)
四、PSR-4:自动加载规范(必须掌握:使用composer 必备)
PHP 开发中最重要的规范,Composer 自动加载的底层标准,现在所有的 PHP 框架(Laravel、ThinkPHP、Symfony)都基于此。
- 命名空间 对应 文件目录:命名空间的层级 = 文件夹的层级
- 类名 对应 文件名 :类名 = 文件名(大小写完全一致)
- 无需手动写 require/include 引入文件,Composer 自动加载
例如:composer.json会有这么一段配置
{
"autoload": {
"psr-4": {
"App\\": "src/", // App命名空间 对应 src目录
}
}
}
五、PSR-12:扩展代码风格规范(必须掌握)
- 缩进:使用4 个空格,禁止用 Tab 键
- 行长度:每行不超过 120 字符,最好 80 字符以内
- 关键字大小写:PHP 关键字全小写(if、for、public、static)
- 类与方法: 类的 { 换行写,方法 { 换行写
- 方法参数、括号左右无多余空格
- 控制结构:if、for、foreach 等关键字后必须加一个空格
- 条件括号 () 内两侧无空格
六、其他知悉即可
- PSR-6:缓存接口规范
- PSR-7:HTTP 消息接口(Request、Response、UploadedFile 等)
- PSR-11:容器依赖注入接口规范(Laravel/Symfony 容器标准)
- PSR-14:事件分发器规范
- PSR-15:中间件接口规范
- PSR-17:HTTP 工厂接口(统一创建请求 / 响应对象)
- PSR-18:HTTP 客户端接口(统一的 HTTP 请求客户端,如 Guzzle)