您的位置 首页 编程知识

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

PSR-12 扩展了 PSR-1 和已弃用的 PSR-2,为现代 PHP 提供了全面的编码规范。该标准通过定义…

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 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中文网其它相关文章!

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/7137.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部