按规则编写代码:团队的PHP代码风格与约定

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

团队协作:PHP的代码风格与约定

\n\n

想象一下,你进入一个用PHP编写的他人项目。打开一个文件,发现制表符和空格混在一起,变量名随意命名,花括号放在任何地方,但就是不在你习惯的位置。熟悉吗?再想象一下,这样的文件有数百个,而且每个都由不同的开发者编写。对于代码审查和代码维护来说,这简直是一场噩梦。

\n\n

在本文中,我们将探讨为什么PHP代码风格和代码约定不仅仅是资深开发者的个人偏好,而是高效团队协作的基础。您将了解PSR标准、命名规则、格式化规范,并获得可以立即应用于自己项目的实际示例。

\n\n

为什么代码风格对团队很重要?

\n\n

当项目中有多个开发者时,统一的代码风格至关重要。原因如下:

\n\n
    \n
  • 可读性。按照统一规则编写的代码,团队中的任何成员都能轻松阅读。无需猜测作者的意图。
  • \n
  • 代码审查速度。如果代码格式一致,审查者可以专注于逻辑,而不是格式问题。
  • \n
  • 更少的错误。统一的约定减少了因不同编码方法而导致的错误可能性。
  • \n
  • 轻松入职。如果代码可预测且结构清晰,新开发者能更快融入项目。
  • \n
\n\n

本质上,PHP编码标准是整个团队沟通的语言。它越统一,误解就越少。

\n\n

主要标准:PSR及其他

\n\n

在PHP世界中,有几个关键建议已成为事实上的标准。最重要的是PSR-1和PSR-12(之前是PSR-2)。它们由PHP-FIG(框架互操作性小组)维护。

\n\n

PSR-1:基本规则

\n\n

PSR-1描述了最基本的规则:如何命名类、方法、常量以及如何组织文件。

\n\n

主要要点:

\n
    \n
  • 文件应仅使用<?php或<?=(用于输出的短标签)。
  • \n
  • 文件编码为UTF-8,不带BOM。
  • \n
  • 类名使用StudlyCaps(PascalCase)。
  • \n
  • 方法名使用camelCase。
  • \n
  • 常量使用大写字母加下划线(MAX_VALUE)。
  • \n
\n\n

符合PSR-1的正确代码示例:

\n\n
<?php\n\nnamespace App\\Services;\n\nclass UserService\n{\n    const DEFAULT_ROLE = 'user';\n\n    public function getUserById(int $id): ?User\n    {\n        // 逻辑\n    }\n\n    public function isAdmin(): bool\n    {\n        // 逻辑\n    }\n}
\n\n

PSR-12:扩展的样式规则

\n\n

PSR-12是PSR-2的演进版本。它增加了更多关于格式化的细节。

\n\n

关键点:

\n
    \n
  • 缩进使用4个空格(不使用制表符)。
  • \n
  • 对于类、方法和控制结构,左花括号放在同一行(K&R风格)。
  • \n
  • 关键字(if、else、while)后必须有一个空格。
  • \n
  • 在命名空间声明后和方法中的return前留一个空行(可选)。
  • \n
  • 每行不超过120个字符(建议80个字符)。
  • \n
\n\n

符合PSR-12的正确格式化示例:

\n\n
<?php\n\nnamespace App\\Controllers;\n\nuse App\\Models\\User;\nuse App\\Services\\AuthService;\n\nclass AuthController\n{\n    private AuthService $authService;\n\n    public function __construct(AuthService $authService)\n    {\n        $this->authService = $authService;\n    }\n\n    public function login(array $credentials): bool\n    {\n        if (empty($credentials['email']) || empty($credentials['password'])) {\n            return false;\n                

博客

书籍推荐