PHP 面试考点之 PSR 规范详解

01-05 3767阅读

PHP 面试考点之 PSR 规范详解

在 PHP 面试中,PSR 规范是一个重要考点。PSR 即 PHP Standards Recommendation(PHP 标准建议),由 PHP FIG(PHP Framework Interop Group)制定,旨在提高 PHP 代码的互操作性、可维护性和可读性。

PSR - 1 基础编码规范

  • 文件:PHP 代码文件必须使用 <?php<?= 标签开始,且结尾处不能有闭合标签 ?>。这有助于避免意外的空白字符输出。
  • 命名空间与类名:推荐使用 PSR - 4 自动加载规范(后面会详细介绍)。类名应采用 StudlyCaps(大驼峰)命名法,例如:
    
    <?php
    namespace App\Models;

class UserModel { // 类的方法和属性 }

- **常量**:常量名全部大写,单词间用下划线分隔,例如 `MAX_COUNT`。
- **函数与方法**:函数名和方法名采用 `camelCase`(小驼峰)命名法,例如 `getUserName`。

#### PSR - 2 编码风格规范
- **缩进**:使用 4 个空格进行缩进,而不是制表符(`Tab`)。这保证了不同编辑器下代码格式的一致性。
- **大括号**:类定义、方法定义、控制结构(如 `if`、`for` 等)的大括号遵循特定规则。例如类定义:
```php
<?php
namespace App;

class MyClass
{
    public function myMethod()
    {
        // 方法体代码
    }
}
  • 行长度:每行代码尽量不超过 80 字符,若超过可合理换行。例如长数组定义:
    <?php
    $myArray = [
    'key1' => 'value1',
    'key2' => 'value2',
    // 长键值对可换行
    'a_very_long_key' => 'a_very_long_value_that_needs_to_be_wrapped'
    ];

PSR - 4 自动加载规范

它定义了一种简单的类自动加载机制。假设项目目录结构如下:

- src
    - App
        - Models
            - User.php

User.php 文件内容:

<?php
namespace App\Models;

class User
{
    // 用户相关方法
}

通过定义一个自动加载函数(通常在 composer 中自动处理),当代码中使用 new App\Models\User() 时,自动加载机制会根据命名空间 App\Models 找到对应的 src/App/Models/User.php 文件并加载。

PSR - 7 HTTP 消息接口规范

在涉及 Web 开发,特别是与 HTTP 交互(如开发框架、HTTP 客户端等)时,PSR - 7 很重要。它定义了 Request(请求)和 Response(响应)对象的接口。例如一个简单的请求对象示例(伪代码,实际通过具体实现类):

<?php
use Psr\Http\Message\RequestInterface;

class MyRequest implements RequestInterface
{
    private $method;
    private $uri;
    private $headers;
    // 实现 RequestInterface 中的方法,如 getMethod() 返回 $this->method
    public function getMethod()
    {
        return $this->method;
    }
}

响应对象类似,定义了 getStatusCode()(获取状态码)、getBody()(获取响应体)等方法。

PSR - 12 扩展编码风格规范

它是对 PSR - 2 的扩展,增加了一些新规则。比如对注释的规范更严格,要求注释准确描述代码功能,特别是对公共方法和类的注释。例如:

<?php
/**
 * 计算两个数的和
 *
 * @param int $num1 第一个数
 * @param int $num2 第二个数
 * @return int 两数之和
 */
function add($num1, $num2)
{
    return $num1 + $num2;
}

在面试中,理解这些 PSR 规范至关重要。对于开发者,遵循规范能提升团队协作效率,使代码更易维护和扩展。面试时,可能会问如何遵循 PSR - 4 实现类的自动加载,或者 PSR - 2 中缩进和大括号的规则等。总结来说,深入掌握 PSR 规范的各个要点,是 PHP 开发者进阶和通过面试的必备技能。在实际项目中,借助 composer 等工具(它遵循 PSR - 4 等规范管理依赖和自动加载),能更好地实践这些规范,写出高质量的 PHP 代码。

文章版权声明:除非注明,否则均为Dark零点博客原创文章,转载或复制请以超链接形式并注明出处。

目录[+]