定义: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(系统不可用)

接口方法

// 通用调用方式
$logger->info('用户登录成功', ['user_id' => 1001, 'ip' => '127.0.0.1']);

四、PSR-4:自动加载规范(必须掌握:使用composer 必备)

PHP 开发中最重要的规范,Composer 自动加载的底层标准,现在所有的 PHP 框架(Laravel、ThinkPHP、Symfony)都基于此

1、命名空间 对应 文件目录:命名空间的层级 = 文件夹的层级

2、类名 对应 文件名 :类名 = 文件名(大小写完全一致)

3、无需手动写 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-7:HTTP 消息接口(Request、Response、UploadedFile 等)。
  • PSR-17:HTTP 工厂接口(统一创建请求 / 响应对象)。
  • PSR-18:HTTP 客户端接口(统一的 HTTP 请求客户端,如 Guzzle)

  • PSR-6:缓存接口规范
  • PSR-11:容器依赖注入接口规范(Laravel/Symfony 容器标准)
  • PSR-14:事件分发器规范
  • PSR-15:中间件接口规范

七、总结

必须掌握的有:PSR-1(基础)、PSR-4(自动加载)、PSR-12(代码风格);

使用ide编辑器,例如,PhpStorm 记得设置为 PSR-12 代码风格;

更多推荐