PSR标准规范不是官方的规范,意味着不是所有的PHP程序都会遵循这个规范,有可能你接手的项目,或者你自己开始写一个项目,不会用到PSR规范。但是PSR规范提供了一个标准参考,能大大提高我们的工作效率。

1. 什么是 PSR ?

PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。

PHP FIG,FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了很多其他成员进来,虽然不是「官方」组织,但也代表了大部分的 PHP 社区。

项目的目的在于:通过框架作者或者框架的代表之间讨论,以最低程度的限制,制定一个协作标准,各个框架遵循统一的编码规范,避免各家自行发展的风格阻碍了 PHP 的发展,解决这个程序设计师由来已久的困扰。

目前已表决通过了 8 套标准,已经得到大部分 PHP 框架的支持和认可。

2. FIG 成员

官方列表中的成员可以在这里看到:http://www.php-fig.org/members/;许多PHP比较流行的框架,不乏一些现代化的项目也都加入到了其中。

比较有名的有CakePHPComposerDrupalJoomlaMagentoPEARPhalconReactPHPSlimSymfonyYii frameworkZend Framework 2等都在这份官方列表中。

很多框架虽然不在这份名单中,但是也引入了 PSR 的一些标准,像现在非常热门的Laravel,以及国内重度使用的Thinkphp5等。

3. PSR 标准

目前已通过的标准规范(2017/6/15):

序号 标题 撰稿者 协调者 发起人
1 基础编码规范 Paul M. Jones N/A N/A
2 编码风格规范 Paul M. Jones N/A N/A
3 日志接口规范 Jordi Boggiano N/A N/A
4 自动加载规范 Paul M. Jones Phil Sturgeon Larry Garfield
6 缓存接口规范 Larry Garfield Paul Dragoonis Robert Hafner
7 HTTP 消息接口规范 Matthew Weier O’Phinney Beau Simensen Paul M. Jones
13 超媒体链接 Larry Garfield Matthew Weier O’Phinney Marc Alexander
16 缓存库通用接口 Paul Dragoonis Jordi Boggiano Fabien Potencier

审核中的标准规范(2017/6/15):

序号 标题 撰稿者 协调者 发起人
11 服务容器接口 Matthieu Napoli, David Négrier Matthew Weier O’Phinney Korvin Szanto

起草中的标准(2017/6/15):

序号 标题 撰稿者 协调者 发起人
5 PHPDoc 标准 Mike van Riel Vacant Vacant
8 Huggable 接口 Larry Garfield Vacant Vacant
9 项目安全问题公示 Michael Hess Korvin Szanto Larry Garfield
10 项目安全上报方法 Michael Hess Larry Garfield Korvin Szanto
12 全量编码风格规范 Korvin Szanto Alexander Makarov Robert Deutz
14 事件管理 Chuck Reeves Brian Retterer Roman Tsiupa
15 HTTP 中间件 Woody Gilk Paul M Jones Jason Coward
17 HTTP 工厂标准 Woody Gilk Roman Tsiupa Paul M Jones

4. 认识RFC

在PSR规范中,很多都参考了RFC文件。RFC是什么呢?

Request For Comments (RFC),是一系列以编号排定的文件。文件收集了有关因特网相关资讯,以及UNIX和因特网社群的软件文件。

基本的因特网通讯协定都有在RFC文件内详细说明。RFC文件还在标准内额外加入了许多的论题,例如对于因特网新开发的协定及发展中所有的记录。因此几乎所有的因特网标准都收录在RFC文件之中。