PSR-12 扩展了 PSR-1 和已弃用的 PSR-2,为现代 PHP 提供了全面的编码规范。该标准通过定义特定的格式规则来确保 PHP 代码的一致性。
关键样式规则
以下是一个符合规范的类示例:
<?php declare(strict_types=1); namespace Vendor\Package; use Vendor\Package\SomeClass; use Vendor\Package\AnotherClass as Another; class ClassName extends ParentClass implements \ArrayAccess, \Countable { private const VERSION = '1.0'; public function methodName(int $arg1, ?string $arg2): string { // 方法体 } } ?>
以下示例展示了 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 功能
以下示例展示了如何在方法签名中使用类型声明:
<?php public function processUser( User $user, ?array $options = null ): ?Response { // 实现 } ?>
以下示例展示了如何在 PHP 8 中使用属性语法:
<?php #[Route("/api/posts/{id}", methods: ["GET"])] public function show(#[EntityId] int $id): Response { // 实现 } ?>
PSR-12 兼容性工具
常见问题和解决方案
可以使用以下命令检查和修复混合行尾符问题:
# 检查混合行尾符 find . -name "*.php" -exec file {} \; # 使用 dos2unix 修复 find . -name "*.php" -exec dos2unix {} \;
下一步
下一篇文章将探讨 PSR-13,它定义了 PHP 中 HTTP 消息接口的标准。
资源
示例:声明语句
<?php declare(strict_types=1); namespace Vendor\Package; use Vendor\Package\{ClassA as A, ClassB, ClassC as C}; use Vendor\Package\SomeNamespace\ClassD as D; ?>
示例:类结构
<?php namespace Vendor\Package; class ClassName extends ParentClass implements \ArrayAccess, \Countable { private $property; public function __construct() { // 构造函数体 } } ?>
以上就是PHP中的PSR-扩展编码样式指南的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号