首页 后端开发 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

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

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++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教程
1668
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
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

说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? 说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

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

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

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型? Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

PHP的持久相关性:它还活着吗? PHP的持久相关性:它还活着吗? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP与其他语言:比较 PHP与其他语言:比较 Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

See all articles