
PSR-12 扩展了 PSR-1 和已弃用的 PSR-2,为现代 PHP 提供了全面的编码规范。该标准通过定义特定的格式规则来确保 PHP 代码的一致性。
关键样式规则
- 常规代码布局:
- 文件必须使用 Unix LF 行尾符。
- 文件必须以单个空行结尾。
- 必须省略 PHP 文件中的
- 代码行应限制在 80 个字符以内。
- 命名空间声明后必须有一行空行。
- 开括号必须与语句在同一行。
- 类结构:
以下是一个符合规范的类示例:
<?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
{
// 方法体
}
}
?>
登录后复制
- 控制结构:
以下示例展示了 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 兼容性工具
- 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中文网其它相关文章!