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