什么是PSR
PSR 是 PHP Standard Recommendations (PHP 推荐标准)的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。
PHP FIG,FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了很多其他成员进来(包括但不限于 Laravel, Joomla, Drupal, Composer, Phalcon, Slim, Symfony, Zend Framework 等),虽然不是「官方」组织,但也代表了大部分的 PHP 社区。
项目的目的在于:通过框架作者或者框架的代表之间讨论,以最低程度的限制,制定一个协作标准,各个框架遵循统一的编码规范,避免各家自行发展的风格阻碍了 PHP 的发展,解决这个程序设计师由来已久的困扰。
目前已表决通过了不少套标准,已经得到大部分 PHP 框架的支持和认可。
本项目的主要面向对象是所有参与的各个成员(也就是各自框架的社区),这里是完整的 成员列表,当然,同时也欢迎其它 PHP 社区采用本规范
PSR 的类型
PSR有PSR-0一直到PSR-18,可以了解一下
PSR-0自动加栽规范(已弃用)
PSR-1基础编码规范
- PHP文件必须只使用
<?php
或<?= ?>
标记,而不要使用其他标记如<?
。 - PHP文件必须只使用UTF-8无BOM编码。
- 类名必须遵循StudlyCaps(大小写混合)规范,所有字母均大写开头。
- 常量名必须完全大写,由单词间的下划线分隔。
- 方法名必须遵循camelCase(驼峰式的)规范。
PSR-2编码风格规范
- 代码必须使用4个空格的缩进而不是tab键。
- 对于控制结构(if、else、while等)必须使用大括号
{}
,即使只有一条语句。 - PHP文件只能包含PHP代码,而不能包含HTML、JavaScript等。
- 命名空间声明后必须插入一个空行。
- 方法的左括号必须和方法名所在行的代码同一行,而不是另起一行。
- 针对代码的不同部分应该空一行进行分组。
PSR-3日志接口规范
* 日志记录器必须实现的接口
* 日志记录器必须支持的格式
* 日志记录器必须支持的级别
PSR-3 日志接口规范中定义的级别:
* EMERG:紧急情况。
* ALERT:警报。
* CRIT:严重。
* ERROR:错误。
* WARN:警告。
* NOTICE:通知。
* INFO:信息。
* DEBUG:调试。
PSR-4自动加裁规范
PSR-4规范定义了类文件应该放置在文件系统上的位置以及命名空间应该如何映射到这些位置
1. 命名空间必须与文件路径相匹配。
2. 类名必须与文件名相匹配。
3. 命名空间和类名之间使用反斜杠(\)分隔。
PSR-5 PHPDoc标准〔未通过)
PSR-6缓存接口规范
PSR-7HTTP 消息接口规范
PSR-7定义了HTTP请求的接口和HTTP响应的接口。由于HTTP请求和响应是每个按照HTTP协议通信的Web应用程序的核心要素,因此它提供了一个标准的接口,可用于代表它们并处理它们
PSR-8 Huggable 接口(未通过)
PSR-9项目安全问题公示(未通过)
PSR-10项目安全上报方法(未通过)
PSR-11容器接口
PSR-12编码规范扩充
PSR-13超媒体链接
PSR-14事件分发器
PSR-15 HTTP 请求处理器
PSR-16缓存接口
PSR-17HTTP工厂
PSR-18 HTTP客户端