php 标准规范
发布日期:2025-05-03 01:40:19 浏览次数:7 分类:精选文章

本文共 1933 字,大约阅读时间需要 6 分钟。

PHP 标准推荐规范

PSR-0: 自动加载标准

PSR-0 已被 PSR-4 替代,以下是 PSR-4 的基本规范:

  • 命名空间格式

    命名空间必须以顶级命名空间(Vendor Name)开始,后面可以有多个子命名空间。
    格式为:

    \vendor\namespace\subnamespace\Class_Name
    • 命名空间和类名之间使用 DIRECTORY_SEPARATOR(默认为 \)。
    • 类名中的下划线 _ 只是作为命名字符,并无特殊意义。
  • 命名空间结构

    • 每个命名空间必须有一个顶级命名空间。
    • 子命名空间可以任意数量。
    • 文件系统中的命名空间分隔符会被转换为 DIRECTORY_SEPARATOR
  • 类名规范

    • 类名必须与对应的 .php 文件名称匹配,大小写敏感。
    • 命名空间前缀与文件路径必须一致。
  • 自动加载器要求

    • 自动加载器不能抛出异常、错误或返回值。
    • 必须确保类、文件等能够被正确加载。
  • PSR-4: 自动加载规范

    PSR-4 定义了完全限定类名的格式:

  • 类名格式

    \namespace\subnamespace\Class_Name
    • 必须包含顶级命名空间。
    • 子命名空间可以任意数量。
    • 类名必须是最终名称。
  • 命名空间结构要求

    • 命名空间前缀必须对应文件的基目录。
    • 子命名空间必须与相应的文件子目录匹配。
    • 命名空间分隔符作为目录分隔符。
  • 类名要求

    • 类名的大小写敏感。
    • 必须与对应的 .php 文件名称匹配。
  • 自动加载器要求

    • 必须支持 PSR-4 标准。
    • 必须确保无异常、错误或返回值。
  • PSR-4 示例
    完整类名 命名空间前缀 文件基目录 文件路径
    \Acme\Log\Writer\File_Writer Acme\Log\Writer ./acme-log-writer/lib/ ./acme-log-writer/lib/File_Writer.php

    PSR-1: 基本编程规范

  • 文件标签

    使用 <?php<?= 作为标签。

  • 文件编码

    文件必须以 UTF-8 无 BOM 编码保存。

  • 文件内容

    • 只能包含定义、声明或副操作。
    • 命名空间和类必须遵守 PSR-0 或 PSR-4。
  • 命名规范

    • 类名:StudlyCase(首字母大写)。
    • 常量:所有字母大写,下划线分隔。
    • 方法名:camelCase(首字母小写)。
  • PSR-2: 编程风格规范

    PSR-2 已被 PSR-12 取代。

    PSR-12: 编程风格规范

  • 声明语句

    • 使用 use 导入语句。
    • 使用 declare(strict_types=1) 确保严格类型。
  • 代码格式

    • 行必须以 LF 结束。
    • 行不能超过 80 个字符(可软限制 120 个字符)。
    • 不允许尾随空格。
    • 缩进使用 4 个空格,无制表符。
  • 代码结构

    • 每行只能有一个语句。
    • 代码块之间用空行分隔。
    • 函数、方法参数后必须有空格。
  • 命名空间结构

    • 深度不得超过两个层级。
    • 使用 use 语句导入复合命名空间时,避免过深层级。
  • 示例
    declare(strict_types=1);namespace Vendor\Package;use Vendor\Package\{    ClassA as A,    ClassB,    ClassC as C};use Vendor\Package\SomeNamespace\ClassD as D;use function Vendor\Package\{    functionA,    functionB,    functionC};use const Vendor\Package\{    ConstantA,    ConstantB,    ConstantC};class Foo extends Bar implements FooInterface{    public function sampleFunction(int $a, int $b = null): array    {        if ($a === $b) {            bar();        } elseif ($a --> $b) {            $foo->bar($arg1);        } else {            BazClass::bar($arg2, $arg3);        }    }    final public static function bar()    {        // 方法体    }}

    以上规范是编写高质量 PHP 代码的重要指南,建议在开发过程中遵循这些标准。

    上一篇:PHP 浮点型精度运算相关问题
    下一篇:PHP 构造函数的重载

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2026年05月21日 15时35分16秒