PHP 之 PSR 标准规范
PSR(PHP Standards Recommendation) 是由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。
由于标准在不断制定,本文主要介绍 PSR-1、PSR-2、PSR-3、PSR-4的一些主要细节,后面逐步更新所有标准。
PSR-1 基本的代码风格
PHP 标签
PHP 代码必须放在 <?php ... ?>
或 <?= ...?>
标签中。
编码
无 BOM 的 UTF-8 字符集。
自动加载
命名空间和类必须遵守 PSR-4 自动加载器标准。
类名
驼峰式:所有单词首字母大写。
参量名
全部大写,如果需要可添加下划线分隔单词。
方法名
驼峰式:首字母小写,后续单词首字母大写。
PSR-2 严格的代码风格
贯彻 PSR-1 ⭐️
缩进
四个空格(一般编辑器都可以设置:将一个制表符转换为4个空格)。
文件和代码行
- PHP 文件采用 UNIX 风格换行符(LF),末尾一个空行;
- 每行代码推荐小于80个字符,最大120。
关键字
使用小写字母,如:true、false
命名空间
- 命名空间声明(namespace)语句后紧跟一个空行;
- 导入命名空间(use)时,最后跟一个空行。
类
- 类定义体的起始括号在类名之后新起一行
- extends 与 implements 关键字必须与类名在同一行。
1 | ClassName extends ParentClass implements Interface |
方法
- 方法定义体的起始括号在方法名之后新起一行;
- 方法定义体结束括号后新起一行;
- 方法参数的括号两边没有空格;
- 每个参数(除最后一个)后面跟一个逗号和空格。
1 | <?php |
可见性
- 类中的每个属性和方法都要声明可见性:public、private、protected;
- 不要在私有方法前加下划线(_);
- abstract 或 final 放在可见性关键字之前;
- static 放在可见性关键字之后。
控制结构
- 涉及关键字:if、else、elseif、switch、case、while、do while、for、foreach、catch。
- 如果控制关键字后面有一对括号(与关键字在同一行),则起始括号后面、结束括号前面不能有空格;
1 | if ($me->isAlive() === true) { |
PSR-3 日志记录器接口
提供类一个日志接口 Psr\Log\LoggerInterface,其复用类 RFC 5424 系统日志协议,详见:http://tools.ietf.org/html/rfc5424
推荐 monolog/monolog,一个实现类 PSR-3 的日志记录器。
PSR-4 自动加载
基于命名空间查找和加载类、接口、性状。
推荐使用 Composer 包依赖管理工具,使用方法参照这里。