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

霞舞
发布: 2025-02-18 08:02:26
原创
1024人浏览过

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

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

关键样式规则

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

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

<?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
    {
        // 方法体
    }
}
?>
登录后复制
  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 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中文网其它相关文章!

豆包AI编程
豆包AI编程

智能代码生成与优化,高效提升开发速度与质量!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号