手写PHP API框架(一)之PSR规范

手写PHP API框架(一)之PSR规范
最新回答
月舞兮颜

2026-01-02 19:22:28

PSR规范是PHP框架开发中需遵循的重要标准,由PHP-FIG(PHP框架互操作性组织)制定,旨在统一编码风格、提升协作效率。以下是核心规范的科普说明

PSR-1:基础编码规范
该规范明确了PHP代码文件的基本结构与命名规则。

  1. 文件格式:代码必须以<?php或<?=标签开头,使用无BOM的UTF-8编码。纯PHP文件应省略结束标签?>,避免意外输出。
  2. 声明类型:文件内只能包含类、函数、常量等声明,或执行副作用操作(如输出内容、修改配置文件),二者不可混用。
  3. 命名规则:命名空间与类名需符合PSR-4自动加载规范;类名采用StudlyCaps(大驼峰)命名法(如UserController);常量全大写并用下划线分隔(如MAX_SIZE);方法名使用camelCase(小驼峰,如getUserInfo)。

PSR-12:代码风格规范
该规范细化了代码格式,提升可读性。

  1. 文件结构:所有PHP文件需以Unix换行符(LF)结束,并以空行结尾;纯PHP文件省略?>。
  2. 缩进与空格:使用4个空格缩进,禁止使用Tab键;每行字符数建议不超过80,硬性限制为120;非空行后不得有多余空格。
  3. 控制结构:关键词后需跟一个空格(如if ($a === $b));括号前后无空格(if ($a)),左花括号{需与右括号)间隔一个空格;结构体主体缩进一次,结束花括号}单独成行。
  4. 关键字与类型声明:所有PHP关键字(如if、foreach)必须小写;类型声明(如int、array)需严格匹配。

PSR-4:自动加载规范
该规范定义了类名到文件路径的映射规则,实现自动化加载。

  1. 类名结构:完整类名由顶级命名空间(Vendor Namespace)、子命名空间和类名组成(如AcmeLogWriterFileWriter)。
  2. 路径映射:命名空间前缀需对应文件基目录,子命名空间转换为目录结构(如AcmeLog映射到./acme-log/lib/),类名对应.php文件(如FileWriter.php)。
  3. 错误处理:自动加载器不得抛出异常或触发错误,确保兼容性。

遵循PSR规范的意义
在团队开发中,统一编码风格能减少协作成本,避免因风格差异导致的维护困难。PSR规范并非限制自由,而是通过标准化提升代码可读性与可维护性,尤其适合构建API框架等需要长期迭代的项目。建议开发者参考官方文档,逐步应用规范。