PHP中的PSR-扩展编码样式指南

php中的psr-扩展编码样式指南

PSR-12 扩展了 PSR-1 和已弃用的 PSR-2,为现代 PHP 提供了全面的编码规范。该标准通过定义特定的格式规则来确保 PHP 代码的一致性。

关键样式规则

  1. 常规代码布局:
  • 文件必须使用 Unix LF 行尾符。
  • 文件必须以单个空行结尾。
  • 必须省略 PHP 文件中的
  • 代码行应限制在 80 个字符以内。
  • 命名空间声明后必须有一行空行。
  • 开括号必须与语句在同一行。
  1. 类结构:

以下是一个符合规范的类示例:

<?php
declare(strict_types=1);

namespace VendorPackage;

use VendorPackageSomeClass;
use VendorPackageAnotherClass as Another;

class ClassName extends ParentClass implements ArrayAccess, Countable
{
    private const VERSION = '1.0';

    public function methodName(int $arg1, ?string $arg2): string
    {
        // 方法体
    }
}
?>
登录后复制
  1. 控制结构:

以下示例展示了 PSR-12 中控制结构的格式化规范:

立即学习PHP免费学习笔记(深入)”;

<?php
if ($expr1) {
    // if 代码块
} elseif ($expr2) {
    // elseif 代码块
} else {
    // else 代码块
}

switch ($expr) {
    case 0:
        echo '第一个 case';
        break;
    default:
        echo '默认 case';
        break;
}

try {
    // try 代码块
} catch (FirstThrowableType $e) {
    // catch 代码块
} finally {
    // finally 代码块
}
?>
登录后复制

现代 PHP 功能

  1. 类型声明:

以下示例展示了如何在方法签名中使用类型声明:

<?php
public function processUser(
    User $user,
    ?array $options = null
): ?Response
{
    // 实现
}
?>
登录后复制
  1. 属性语法:

以下示例展示了如何在 PHP 8 中使用属性语法:

<?php
#[Route("/api/posts/{id}", methods: ["GET"])]
public function show(#[EntityId] int $id): Response
{
    // 实现
}
?>
登录后复制

PSR-12 兼容性工具

  • PHP CodeSniffer 配置:
  • PHP-CS-Fixer 设置:
  • IDE 集成:

    • PhpStorm
    • VS Code 配合 PHP Intelephense

常见问题和解决方案

  • 混合行尾符:

可以使用以下命令检查和修复混合行尾符问题:

# 检查混合行尾符
find . -name "*.php" -exec file {} ;

# 使用 dos2unix 修复
find . -name "*.php" -exec dos2unix {} ;
登录后复制
  • 不正确的缩进: 确保使用一致的缩进 (例如,四个空格)。

下一步

下一篇文章将探讨 PSR-13,它定义了 PHP 中 HTTP 消息接口的标准。

资源

  • 官方 PSR-12 规范
  • PHP CodeSniffer PSR-12 规则集
  • PHP-CS-Fixer 文档

示例:声明语句

<?php
declare(strict_types=1);

namespace VendorPackage;

use VendorPackage{ClassA as A, ClassB, ClassC as C};
use VendorPackageSomeNamespaceClassD as D;

?>
登录后复制

示例:类结构

<?php
namespace VendorPackage;

class ClassName extends ParentClass implements ArrayAccess, Countable
{
    private $property;

    public function __construct()
    {
        // 构造函数体
    }
}
?>
登录后复制

以上就是PHP中的PSR-扩展编码样式指南的详细内容,更多请关注php中文网其它相关文章!

https://www.php.cn/faq/1222654.html

发表回复

Your email address will not be published. Required fields are marked *