了解 PSR – PHP 编码风格指南

了解 psr - php 编码风格指南

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

目录

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

什么是 psr-12?

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

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

为什么 psr-12 很重要?

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

立即学习“PHP免费学习笔记(深入)”;

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

psr-12 的关键规则

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

1. 文件结构

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

2. 命名空间和使用声明

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

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

示例:

<?phpnamespace appcontrollers;use appmodelsuser;use apprepositoriesuserrepository;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 强调需要正确、清晰的评论。

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

// 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();}

如何在 php 项目中应用 psr-12

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

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

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

帮助您遵循 psr-12 的工具

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

1. php_codesniffer

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

安装和使用它:

composer require "squizlabs/php_codesniffer=*"

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

./vendor/bin/phpcs --standard=psr12 src/

2. php cs 修复程序

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

composer require friendsofphp/php-cs-fixer

运行修复程序:

./vendor/bin/php-cs-fixer fix src/

3. phpstorm

如果您使用 phpstorm,您可以将其配置为遵循 psr-12。转到 设置 -> 编辑器 -> 代码样式 -> php 并将标准设置为 psr-12。

最后的想法

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

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

编码愉快!

以上就是了解 PSR – PHP 编码风格指南的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1248630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月9日 20:40:19
下一篇 2025年12月8日 12:35:45

相关推荐

  • Laravel 自定义辅助函数 – 快速提示

    辅助函数在 laravel 开发者中非常流行。它们提供了对一些巧妙算法的访问,可以使用单个语句在您的代码中使用。 最知名的辅助函数可能是 url(),它允许您生成内部应用程序 url。 另一个很棒的帮手是 retry() 函数,例如:https://laravel.com/docs/11.x/hel…

    2025年12月9日
    000
  • Lithe 上的 PHP 会话管理:从基础配置到高级使用

    当我们谈论 web 应用程序时,首要需求之一是在用户浏览页面时维护用户的信息。这就是 lithe 中的 会话管理 的用武之地,它允许您存储登录信息或用户首选项等数据。 安装简单快捷 要开始在 lithe 中使用会话,您只需通过 composer 安装会话中间件。只需在项目中的终端中运行以下命令: c…

    2025年12月9日
    000
  • 使用 Lithe 进行 PHP 会话管理:从基本设置到高级使用

    当我们谈论 web 应用程序时,首要需求之一是在用户浏览页面时维护用户信息。这就是 lithe 中的 会话管理 的用武之地,它允许您存储登录信息或用户首选项等数据。 安装简单快捷 要开始在 lithe 中使用会话,您只需通过 composer 安装会话中间件。只需在项目中的终端中运行以下命令: co…

    2025年12月9日
    000
  • PHP 函数设计模式应用基础

    PHP 函数设计模式 函数设计模式是一种设计模式,它允许您将函数分组到逻辑模块中,使代码更易于管理和维护。PHP 中有一些常用的函数设计模式: 单例(Singleton) 单例模式确保类只有一个实例。这对于创建全局对象或确保只有一个对象访问特定资源非常有用。 立即学习“PHP免费学习笔记(深入)”;…

    2025年12月9日
    000
  • 发布开源包:真的值得吗?

    很多人喜欢说开源社区是现代发展的支柱。但对于普通开发者来说,投入时间和精力来发布 python 和 php 包真的值得吗?一些人认为,为了获得知名度和机会,任何困难都是值得的。其他人则认为这只是一种“昂贵的爱好”,与付出的努力相比,回报即使不是不存在,也是微乎其微的。 现实情况是,大多数为开源包做出…

    2025年12月9日
    000
  • 使用 Twig 通过 PHP 渲染 Markdown

    twig 是使用 symfony 开发 web 应用程序时渲染 html 的首选模板引擎。然而,twig 的灵活性不仅仅限于生成 html 页面。它可以成为跨多个渠道交付内容的强大工具,例如生成 markdown 文件、json 输出,甚至纯文本,所有这些都来自同一组内容。 这种适应性使您可以为不同…

    2025年12月9日
    000
  • PHP 函数设计模式应用的最佳实践

    函数设计模式应用于 php 函数开发中,为创建可重用、可扩展且易于维护的函数提供了最佳实践。模式包括:单一职责原则:函数应只负责一项明确的任务。开放-封闭原则:函数对扩展开放,对修改封闭。依赖倒置原则:高层模块依赖于抽象接口,而不是低层模块。实例化分离原则:接口只包含密切相关的操作,客户端只实现所需…

    2025年12月9日
    000
  • PHP 函数设计模式在机器学习中的应用

    函数设计模式在机器学习中通过工厂模式创建模型对象,建造者模式构建训练数据集,以及策略模式切换算法,实现可重用、可扩展和易维护的机器学习管道。 PHP 函数设计模式在机器学习中的应用 函数设计模式是一种设计原则,用于提高代码的可重用性和可维护性。在机器学习中,函数设计模式可以帮助我们创建灵活、可扩展的…

    2025年12月9日
    100
  • PHP 函数设计模式在 Web 开发中的应用

    php 函数设计模式用于优化 web 开发代码,提升其可重用性、灵活性、可测试性和可维护性,包括:策略模式:分离算法,实现动态算法切换。工厂方法模式:封装对象创建,根据需要创建不同对象。命令模式:封装请求,支持请求队列和不同顺序执行。 PHP 函数设计模式在 Web 开发中的应用 函数设计模式是一种…

    2025年12月9日
    000
  • PHP 函数设计模式应用案例分析

    函数设计模式提高了 php 代码的可重用性和可维护性。本文介绍了四种常见模式:单例模式:确保只有一个实例。工厂模式:创建特定类型的对象。观察者模式:当主题状态改变时通知观察者。策略模式:互换使用算法而不改变客户端代码。 PHP 函数设计模式应用案例分析 函数设计模式是一种组织函数代码的方式,可提高代…

    2025年12月9日
    000
  • PHP 函数设计模式应用指南

    针对不同设计模式,本文提供了 php 中的常见函数设计模式以及它们的应用指南。这些模式包括:factory 模式,builder 模式,singleton 模式,observer 模式和 iterator 模式。通过应用这些模式,开发者可以创建可扩展、易于维护和调试的 php 代码。 PHP 函数设…

    2025年12月9日
    000
  • php网络编程指南:HTTP协议入门

    PHP 网络编程指南:HTTP 协议入门 简介 HTTP(超文本传输协议)是一种客户端-服务器协议,用于在万维网上传输数据。它是 Web 的基础,让我们能够通过浏览器访问网站。本指南将介绍 HTTP 协议的基础知识,并通过代码示例展示如何在 PHP 中使用它。 HTTP 消息格式 立即学习“PHP免…

    2025年12月9日
    000
  • SharpAPI Laravel 集成指南

    欢迎来到sharpapi laravel 集成指南!该存储库提供了有关如何将 sharpapi 集成到下一个 laravel ai 应用程序中的全面的分步教程。无论您是希望通过**人工智能支持的功能**还是自动化工作流程来增强您的应用程序,本指南都将引导您完成从身份验证到进行 api 调用和处理响应…

    2025年12月9日
    000
  • php网络编程指南:WebSocket编程详解

    websocket 是一种允许客户端和服务器通过单个 tcp 连接进行全双工通信的协议。使用 php 开发 websocket 应用程序的步骤如下:安装 ratchet pawl 库。创建 websocket 服务器,使用 ratchet pawl 库并实现 websocket 应用程序类。实现 o…

    2025年12月9日
    000
  • php网络编程指南:使用cURL库进行HTTP请求

    php 网络编程中使用 curl 库发送 http 请求安装 curl 扩展。发送 get 请求:使用 curl_init()、curl_setopt() 和 curl_exec()。发送 post 请求:在 curl_setopt() 中设置 curlopt_post 为 true,并使用 cur…

    2025年12月9日
    000
  • 超越 AES — 使用 XChaCha20 对 Laravel 进行现代加密

    在当今的数字环境中,数据加密是每个 web 应用程序的重要组成部分。本文探讨了我为什么开发一个利用 libsodium 的 xchacha20-poly1305 加密功能的包,以及它如何增强 laravel 应用程序的安全性,同时最大限度地减少开销。 动机和要求 laravel 的框架 crypt …

    2025年12月9日
    000
  • php网络编程指南:RESTful API开发指南

    如何使用 laravel 创建 restful api?安装 laravel。配置路由,通过 routes/api.php 定义 crud 操作路由。创建控制器 todocontroller,用于处理 crud 操作。添加代码注释,以清楚地描述每个操作的功能。使用 postman 安装并调用 api…

    2025年12月9日
    000
  • 如何使用 Laravel 框架扩展 PHP 函数的日志记录?

    laravel 提供了一种方法来扩展 php 函数的日志记录:安装 monolog/monolog 扩展。在 config/logging.php 中配置 custom 日志通道。使用 illuminatesupportfacadeslog 门面记录自定义日志。 使用 Laravel 扩展 PHP …

    2025年12月9日
    000
  • php函数日志记录第三方模块问题解答

    第三方模块,如 monolog,可简化 php 程序日志记录。安装 monolog(composer require monolog/monolog)配置 monolog(创建 logger 并指定处理器)使用 info()、error() 等方法记录日志信息集成 psr-3 标准,便于在模块间切换…

    2025年12月9日
    000
  • 如何在 PHP 函数中使用日志记录上下文?

    如何在 PHP 函数中使用日志记录上下文 PHP 日志记录上下文允许您在日志记录消息中添加额外的附加信息,从而有助于调试和故障排除。 使用步骤 加载 Monolog 日志记录库:php composer require monolog/monolog 创建日志记录器:php $logger = ne…

    2025年12月9日
    000

发表回复

登录后才能评论
关注微信