首页 后端开发 php教程 了解 PSR - PHP 编码风格指南

了解 PSR - PHP 编码风格指南

Oct 22, 2024 am 06:11 AM

Understanding PSR- The PHP Coding Style Guide

如果您使用 PHP 进行开发已有一段时间,您可能遇到过术语 PSR-12。它是 PHP 社区中最广泛接受的编码标准之一,旨在确保不同项目之间 PHP 代码库的一致性。无论您是单独工作还是作为团队的一员,遵循 PSR-12 都可以使您的代码更干净、更具可读性并且更易于维护。在本博客中,我们将详细介绍 PSR-12 是什么、它为何重要以及如何将其应用到您的项目中。

目录

  1. 什么是 PSR-12?
  2. 为什么 PSR-12 很重要?
  3. PSR-12 的主要规则
    • 文件结构
    • 命名空间和使用声明
    • 类和方法
    • 控制结构
    • 评论和文档
  4. 如何在 PHP 项目中应用 PSR-12
  5. 帮助您遵循 PSR-12 的工具
  6. 最后的想法

什么是 PSR-12?

PSR-12 是 PHP 编码风格指南,由 PHP-FIG(框架互操作性小组)开发。它建立在之前的 PSR-2 标准的基础上,提供了一组更新的规则,反映了现代 PHP 实践并提高了代码库之间的一致性。

将 PSR-12 视为编写干净、可读且可维护的 PHP 代码的蓝图。通过遵循 PSR-12,开发人员可以确保他们的代码遵循标准化结构,从而更轻松地与他人协作并开展开源项目。

为什么 PSR-12 很重要?

像 PSR-12 这样的编码标准不仅仅是对空格和制表符吹毛求疵。这就是它们重要的原因:

  • 可读性:遵循标准样式的代码更容易阅读,特别是对于刚接触项目的开发人员。
  • 协作:如果每个人都遵循相同的规则,那么合作就会变得更加顺利和高效。
  • 可维护性:干净、一致的代码更容易调试、测试和随着时间的推移进行扩展。
  • 互操作性:在开源项目或集成第三方库时,遵循通用标准可确保不同代码库之间的兼容性。

PSR-12 的主要规则

让我们深入了解 PSR-12 规定的一些关键规则。虽然有许多较小的指南,但以下是最引人注目的指南。

1. 文件结构

  • 开始标签:PHP 文件必须使用
  • 编码:文件必须以 UTF-8 编码,不带 BOM(字节顺序标记)。
  • 行长度:行不应超过 120 个字符,但最好不超过 80 个字符。
  • 空行:PHP 开始标签之后或结束标签之前不应有空行。此外,return 语句之前以及方法定义之间必须有一个空行。

2. 命名空间和使用声明

PSR-12 要求命名空间和使用声明遵循特定的顺序以提高清晰度:

  • 命名空间声明:命名空间声明必须是 PHP 开始标记之后的第一行。命名空间后必须有一个空行。
  • Use 声明:所有 use 声明必须在命名空间声明之后组合在一起,并用空行分隔。此外,最后一个 use 语句后必须有一个空行。

示例:

<?php

namespace App\Controllers;

use App\Models\User;
use App\Repositories\UserRepository;

class UserController {
    // Class implementation
}
登录后复制
登录后复制

3. 类和方法

PSR-12 对如何声明类、属性和方法强制执行一些严格的规则:

  • 类声明:class关键字后面必须跟一个空格,然后是类名。左大括号 { 必须与类声明放在同一行,右大括号 } 放在自己的行上。
  • 属性:所有属性都必须声明可见性(公共、受保护、私有)。
  • 方法:与类声明类似,function 关键字后面必须跟一个空格,然后是方法名称。必须为所有方法声明可见性。
class UserController {
    private $userRepository;

    public function __construct(UserRepository $userRepository) {
        $this->userRepository = $userRepository;
    }
}
登录后复制
登录后复制

4. 控制结构

if、for、switch 等控制结构必须遵循一定的规则:

  • 结构:控制关键字和左括号之间必须有一个空格。必须始终使用大括号 {},即使对于单行语句也是如此。
  • 缩进:控制结构内的所有块都必须缩进一级(通常为四个空格)。
if ($user->isAdmin()) {
    echo "User is an admin";
} else {
    echo "User is not an admin";
}
登录后复制
登录后复制

5. 评论和文档

注释对于解释为什么代码的某些部分存在至关重要。 PSR-12 强调需要正确、清晰的评论。

  • 块注释:使用 /* */ 进行多行注释,并在注释前放置一个空行。
  • 单行注释:使用//进行内联注释,并确保注释有意义。
<?php

namespace App\Controllers;

use App\Models\User;
use App\Repositories\UserRepository;

class UserController {
    // Class implementation
}
登录后复制
登录后复制

如何在 PHP 项目中应用 PSR-12

要在项目中遵循 PSR-12,您可以在编写代码时手动遵守指南,但确保合规性的最佳方法是使用自动化工具。

首先,熟悉这些一般做法:

  • 使用一致的缩进:缩进需要四个空格。
  • 限制行长度:尽量将行长度控制在 120 个字符以下,但为了更好的可读性,最好使用 80 个字符。
  • 组织代码结构:遵循类声明、可见性和控制结构的规则。

帮助您遵循 PSR-12 的工具

手动确保您的代码遵循 PSR-12 可能非常耗时,但有一些工具可以帮助您自动化此过程。

1. PHP_CodeSniffer

确保 PHP 代码遵循 PSR-12 的最流行工具之一是 PHP_CodeSniffer。它会分析您的代码并指出您偏离标准的地方。

安装和使用它:

class UserController {
    private $userRepository;

    public function __construct(UserRepository $userRepository) {
        $this->userRepository = $userRepository;
    }
}
登录后复制
登录后复制

然后,针对您的代码运行它:

if ($user->isAdmin()) {
    echo "User is an admin";
} else {
    echo "User is not an admin";
}
登录后复制
登录后复制

2. PHP CS 修复程序

另一个有用的工具是 PHP CS Fixer。它不仅可以检测问题,还可以自动修复您的代码以符合 PSR-12。

// Fetch user from the repository
$user = $userRepository->find($id);

/*
 * If user is not found, throw an exception.
 * This helps in handling invalid user IDs.
 */
if (!$user) {
    throw new NotFoundException();
}
登录后复制

使用以下命令运行修复程序:

composer require "squizlabs/php_codesniffer=*"
登录后复制

3. PHPStorm

如果您使用 PHPStorm,您可以将其配置为遵循 PSR-12。前往设置 -> 编辑器 -> 代码风格 -> PHP 并将标准设置为 PSR-12。

最后的想法

在 PHP 项目中遵循 PSR-12 不仅仅是遵守任意规则。它是为了让你的代码更干净、更易读、更容易维护——无论你是单独工作还是与团队一起工作。通过遵循 PSR-12,您不仅为自己编写代码,而且为整个 PHP 社区编写代码。

采用此标准是朝着编写专业、一致且可维护的 PHP 代码迈出的一步。使用提到的工具使过程变得更容易,并观察您的项目变得多么干净和有组织!

编码愉快!

以上是了解 PSR - PHP 编码风格指南的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1656
14
CakePHP 教程
1415
52
Laravel 教程
1309
25
PHP教程
1257
29
C# 教程
1229
24
在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话如何劫持工作,如何在PHP中减轻它? 会话如何劫持工作,如何在PHP中减轻它? Apr 06, 2025 am 12:02 AM

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

您如何在PHP中有效处理异常(尝试,捕捉,最后,投掷)? 您如何在PHP中有效处理异常(尝试,捕捉,最后,投掷)? Apr 05, 2025 am 12:03 AM

在PHP中,异常处理通过try,catch,finally,和throw关键字实现。1)try块包围可能抛出异常的代码;2)catch块处理异常;3)finally块确保代码始终执行;4)throw用于手动抛出异常。这些机制帮助提升代码的健壮性和可维护性。

说明PHP中的不同错误类型(注意,警告,致命错误,解析错误)。 说明PHP中的不同错误类型(注意,警告,致命错误,解析错误)。 Apr 08, 2025 am 12:03 AM

PHP中有四种主要错误类型:1.Notice:最轻微,不会中断程序,如访问未定义变量;2.Warning:比Notice严重,不会终止程序,如包含不存在文件;3.FatalError:最严重,会终止程序,如调用不存在函数;4.ParseError:语法错误,会阻止程序执行,如忘记添加结束标签。

包括,require,incement_once,require_once之间有什么区别? 包括,require,incement_once,require_once之间有什么区别? Apr 05, 2025 am 12:07 AM

在PHP中,include,require,include_once,require_once的区别在于:1)include产生警告并继续执行,2)require产生致命错误并停止执行,3)include_once和require_once防止重复包含。这些函数的选择取决于文件的重要性和是否需要防止重复包含,合理使用可以提高代码的可读性和可维护性。

PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

什么是HTTP请求方法(获取,发布,放置,删除等),何时应该使用? 什么是HTTP请求方法(获取,发布,放置,删除等),何时应该使用? Apr 09, 2025 am 12:09 AM

HTTP请求方法包括GET、POST、PUT和DELETE,分别用于获取、提交、更新和删除资源。1.GET方法用于获取资源,适用于读取操作。2.POST方法用于提交数据,常用于创建新资源。3.PUT方法用于更新资源,适用于完整更新。4.DELETE方法用于删除资源,适用于删除操作。

PHP:网络开发的关键语言 PHP:网络开发的关键语言 Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

See all articles