PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。php
PHP FIG,FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了不少其余成员进来(包括但不限于 Laravel, Joomla, Drupal, Composer, Phalcon, Slim, Symfony, Zend Framework 等),虽然不是「官方」组织,但也表明了大部分的 PHP 社区。laravel
项目的目的在于:经过框架做者或者框架的表明之间讨论,以最低程度的限制,制定一个协做标准,各个框架遵循统一的编码规范,避免各家自行发展的风格阻碍了 PHP 的发展,解决这个程序设计师由来已久的困扰。git
以上内容来源:https://github.com/php-figgithub
状态 | 序号 | 标题 | 撰稿者 | 协调者 | 发起人 |
---|---|---|---|---|---|
X | 0 | 自动加载规范 | Matthew Weier O'Phinney | N/A | N/A |
A | 1 | 基础编码规范 | Paul M. Jones | N/A | N/A |
A | 2 | 编码风格规范 | Paul M. Jones | N/A | N/A |
A | 3 | 日志接口规范 | Jordi Boggiano | N/A | N/A |
A | 4 | 自动加载规范 | Paul M. Jones | Phil Sturgeon | Larry Garfield |
D | 5 | PHPDoc 标准 | Mike van Riel | Vacant | Vacant |
A | 6 | 缓存接口规范 | Larry Garfield | Paul Dragoonis | Robert Hafner |
A | 7 | HTTP 消息接口规范 | Matthew Weier O'Phinney | Beau Simensen | Paul M. Jones |
D | 8 | Huggable 接口 | Larry Garfield | Vacant | Paul M. Jones |
D | 9 | 项目安全问题公示 | Lukas Kahwe Smith | Korvin Szanto | Larry Garfield |
D | 10 | 项目安全上报方法 | Lukas Kahwe Smith | Larry Garfield | Korvin Szanto |
D | 11 | 服务容器接口 | Matthieu Napoli, David Négrier | Paul M. Jones | Vacant |
D | 12 | 全量编码风格规范 | Korvin Szanto | Alexander Makarov | Robert Deutz |
D | 13 | 超媒体连接 | Larry Garfield | Matthew Weier O'Phinney | Evert Pot |
说明: A (Accepted) = 已经过 | D (Draft) = 起草中 | R (Review) = 审查中 | X (Deprecated) = 已废弃。缓存
在此以前,各个框架或厂商各自作本身的自动加载,有的使用 void __autoload ( string $class )
有的使用 bool spl_autoload_register()
各自命名空间和文件目录对应规则不一致,须要熟悉各个框架和类库的自动加载机制才能顺利使用。安全
有了统一的自动加载规范(统一的命名空间与文件路径映射规范)以后,只须要遵循同一个自动加载机制就可使用各个框架和类库,甚至不用知道他们内部具体如何实现自动加载。composer
具体 PSR 标准有:框架
在此以前,没有一些统一的规范接口,一样的功能(例如Log)各个框架或类库都本身实现,一致都在从新制造轮子,有了一些统一的接口,只要一个厂商或框架实现了统一接口,其它厂商或框架不须要从新实现,直接使用便可。ide
具体 PSR 标准有:工具
有了统一编码风格规范,更有利于查看和学习各个框架或类库,不不须要每次都适应新的编码风格。
同时在开发团队内部使用统一的编码规范更有利于代码审查、版本控制、团队内部交流。
具体 PSR 标准有:
PHP Code Sniffer 简称 phpcs ,主要用来检查 PHP 代码是否符合 PSR-2 的标准。若是 PHP 代码中存在不符合 PSR-2 标准的部分,会产生一份错误报告,便于咱们检查哪些代码不符合标准。
composer global require 'squizlabs/php_codesniffer=*'
phpcs --version
phpcs --standard=PSR2 PHP文件(或目录)
注意 phpcs 默认使用的编码风格标注是 PEAR ,因此若是要检查 PSR-2 标准须要明确指定(--standard=PSR2)。
phpcs -i
详细操做
查看官方文档:PHP CodeSniffer WIKi
PHP Coding Standards Fixer 简称 php-cs-fixer, 能够用来帮我修正代码编码风格使其符合 PSR-2 规范。
composer global require friendsofphp/php-cs-fixer
php-cs-fixer --version
php-cs-fixer fix php /path/to/dir(or /path/to/file)
详细操做
查看官方文档:PHP-CS-Fixer