摘要:標(biāo)準(zhǔn)規(guī)范簡(jiǎn)介是的簡(jiǎn)寫,由組織制定的規(guī)范,是開發(fā)的實(shí)踐標(biāo)準(zhǔn)。具體標(biāo)準(zhǔn)有有了統(tǒng)一編碼風(fēng)格規(guī)范,更有利于查看和學(xué)習(xí)各個(gè)框架或類庫(kù),不不需要每次都適應(yīng)新的編碼風(fēng)格。同時(shí)在開發(fā)團(tuán)隊(duì)內(nèi)部使用統(tǒng)一的編碼規(guī)范更有利于代碼審查版本控制團(tuán)隊(duì)內(nèi)部交流。
PHP 標(biāo)準(zhǔn)規(guī)范 PSR PSR 簡(jiǎn)介
PSR 是 PHP Standard Recommendations 的簡(jiǎn)寫,由 PHP FIG 組織制定的 PHP 規(guī)范,是 PHP 開發(fā)的實(shí)踐標(biāo)準(zhǔn)。
PHP FIG,F(xiàn)IG 是 Framework Interoperability Group(框架可互用性小組)的縮寫,由幾位開源框架的開發(fā)者成立于 2009 年,從那開始也選取了很多其他成員進(jìn)來(包括但不限于 Laravel, Joomla, Drupal, Composer, Phalcon, Slim, Symfony, Zend Framework 等),雖然不是「官方」組織,但也代表了大部分的 PHP 社區(qū)。
項(xiàng)目的目的在于:通過框架作者或者框架的代表之間討論,以最低程度的限制,制定一個(gè)協(xié)作標(biāo)準(zhǔn),各個(gè)框架遵循統(tǒng)一的編碼規(guī)范,避免各家自行發(fā)展的風(fēng)格阻礙了 PHP 的發(fā)展,解決這個(gè)程序設(shè)計(jì)師由來已久的困擾。
以上內(nèi)容來源:https://github.com/php-fig
PSR 標(biāo)準(zhǔn)內(nèi)容狀態(tài) | 序號(hào) | 標(biāo)題 | 撰稿者 | 協(xié)調(diào)者 | 發(fā)起人 |
---|---|---|---|---|---|
X | 0 | 自動(dòng)加載規(guī)范 | Matthew Weier O"Phinney | N/A | N/A |
A | 1 | 基礎(chǔ)編碼規(guī)范 | Paul M. Jones | N/A | N/A |
A | 2 | 編碼風(fēng)格規(guī)范 | Paul M. Jones | N/A | N/A |
A | 3 | 日志接口規(guī)范 | Jordi Boggiano | N/A | N/A |
A | 4 | 自動(dòng)加載規(guī)范 | Paul M. Jones | Phil Sturgeon | Larry Garfield |
D | 5 | PHPDoc 標(biāo)準(zhǔn) | Mike van Riel | Vacant | Vacant |
A | 6 | 緩存接口規(guī)范 | Larry Garfield | Paul Dragoonis | Robert Hafner |
A | 7 | HTTP 消息接口規(guī)范 | Matthew Weier O"Phinney | Beau Simensen | Paul M. Jones |
D | 8 | Huggable 接口 | Larry Garfield | Vacant | Paul M. Jones |
D | 9 | 項(xiàng)目安全問題公示 | Lukas Kahwe Smith | Korvin Szanto | Larry Garfield |
D | 10 | 項(xiàng)目安全上報(bào)方法 | Lukas Kahwe Smith | Larry Garfield | Korvin Szanto |
D | 11 | 服務(wù)容器接口 | Matthieu Napoli, David Négrier | Paul M. Jones | Vacant |
D | 12 | 全量編碼風(fēng)格規(guī)范 | Korvin Szanto | Alexander Makarov | Robert Deutz |
D | 13 | 超媒體鏈接 | Larry Garfield | Matthew Weier O"Phinney | Evert Pot |
說明: A (Accepted) = 已通過 | D (Draft) = 起草中 | R (Review) = 審查中 | X (Deprecated) = 已廢棄。
PSR 解決的3個(gè)問題 AUTOLOADING? 在此之前,各個(gè)框架或廠商各自做自己的自動(dòng)加載,有的使用 void __autoload ( string $class ) 有的使用 bool spl_autoload_register() 各自命名空間和文件目錄對(duì)應(yīng)規(guī)則不一致,需要熟悉各個(gè)框架和類庫(kù)的自動(dòng)加載機(jī)制才能順利使用。
? 有了統(tǒng)一的自動(dòng)加載規(guī)范(統(tǒng)一的命名空間與文件路徑映射規(guī)范)之后,只需要遵循同一個(gè)自動(dòng)加載機(jī)制就可以使用各個(gè)框架和類庫(kù),甚至不用知道他們內(nèi)部具體如何實(shí)現(xiàn)自動(dòng)加載。
具體 PSR 標(biāo)準(zhǔn)有:
PSR-4: Improved Autoloading
INTERFACES? 在此之前,沒有一些統(tǒng)一的規(guī)范接口,同樣的功能(例如Log)各個(gè)框架或類庫(kù)都自己實(shí)現(xiàn),一致都在重新制造輪子,有了一些統(tǒng)一的接口,只要一個(gè)廠商或框架實(shí)現(xiàn)了統(tǒng)一接口,其它廠商或框架不需要重新實(shí)現(xiàn),直接使用即可。
具體 PSR 標(biāo)準(zhǔn)有:
PSR-3: Logger Interface
PSR-6: Caching Interface
PSR-7: HTTP Message Interfaces
PSR-11: Container Interface
PSR-13: Hypermedia Links
PSR-15: HTTP Handlers
PSR-16: Simple Cache
CODING STYLES? 有了統(tǒng)一編碼風(fēng)格規(guī)范,更有利于查看和學(xué)習(xí)各個(gè)框架或類庫(kù),不不需要每次都適應(yīng)新的編碼風(fēng)格。
同時(shí)在開發(fā)團(tuán)隊(duì)內(nèi)部使用統(tǒng)一的編碼規(guī)范更有利于代碼審查、版本控制、團(tuán)隊(duì)內(nèi)部交流。
具體 PSR 標(biāo)準(zhǔn)有:
PSR-1: Basic Coding Standard
PSR-2: Coding Style Guide
輔助工具 phpcsPHP Code Sniffer 簡(jiǎn)稱 phpcs ,主要用來檢查 PHP 代碼是否符合 PSR-2 的標(biāo)準(zhǔn)。如果 PHP 代碼中存在不符合 PSR-2 標(biāo)準(zhǔn)的部分,會(huì)產(chǎn)生一份錯(cuò)誤報(bào)告,便于我們檢查哪些代碼不符合標(biāo)準(zhǔn)。
composer global require "squizlabs/php_codesniffer=*"
phpcs --version
phpcs --standard=PSR2 PHP文件(或目錄)
注意 phpcs 默認(rèn)使用的編碼風(fēng)格標(biāo)注是 PEAR ,所以如果要檢查 PSR-2 標(biāo)準(zhǔn)需要明確指定(--standard=PSR2)。
phpcs -i
詳細(xì)操作
查看官方文檔:PHP CodeSniffer WIKi
php-cs-fixerPHP Coding Standards Fixer 簡(jiǎn)稱 php-cs-fixer, 可以用來幫我修正代碼編碼風(fēng)格使其符合 PSR-2 規(guī)范。
composer global require friendsofphp/php-cs-fixer
php-cs-fixer --version
php-cs-fixer fix php /path/to/dir(or /path/to/file)
詳細(xì)操作
查看官方文檔:PHP-CS-Fixer
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28806.html
摘要:今天這篇分享將簡(jiǎn)單地梳理一下規(guī)范,并介紹一個(gè)代碼檢查工具,結(jié)合以及進(jìn)行實(shí)踐。目前流行的一些規(guī)范是的簡(jiǎn)寫,由組織制定的規(guī)范,是開發(fā)的實(shí)踐標(biāo)準(zhǔn)。目前已表決通過了套標(biāo)準(zhǔn),已經(jīng)得到大部分框架的支持和認(rèn)可。 > 作為一個(gè)新手,寫出規(guī)范的代碼也是一門必修課,除了閱讀相應(yīng)的代碼規(guī)范文檔之外,充分利用相關(guān)的工具能使得進(jìn)階之路事半功倍。今天這篇分享將簡(jiǎn)單地梳理一下 PHP 規(guī)范,并介紹一個(gè)代碼檢查工具 ...
摘要:前言在開始之前,歡迎關(guān)注我自己的博客這篇文章是對(duì)自動(dòng)加載功能的一個(gè)總結(jié),內(nèi)容涉及的自動(dòng)加載功能的命名空間的與標(biāo)準(zhǔn)等內(nèi)容。要實(shí)現(xiàn)第一步,第二步的功能,必須在開發(fā)時(shí)約定類名與磁盤文件的映射方法,只有這樣我們才能根據(jù)類名找到它對(duì)應(yīng)的磁盤文件。 前言 在開始之前,歡迎關(guān)注我自己的博客:www.leoyang90.cn 這篇文章是對(duì)PHP自動(dòng)加載功能的一個(gè)總結(jié),內(nèi)容涉及PHP的自動(dòng)加載功能、P...
摘要:本文目的是通過自己寫的一個(gè)的簡(jiǎn)單的庫(kù)花密密碼生成工具,來學(xué)習(xí)我認(rèn)為的庫(kù)開發(fā)的一些規(guī)范,以及上持續(xù)構(gòu)建你的項(xiàng)目的一些方法。給自己的項(xiàng)目開啟持續(xù)構(gòu)建。包發(fā)布以及當(dāng)你的代碼完成后,測(cè)試完成后。 本文目的是通過自己寫的一個(gè)php的簡(jiǎn)單的庫(kù)(花密密碼生成工具), 來學(xué)習(xí)我認(rèn)為的php庫(kù)開發(fā)的一些規(guī)范,以及github上持續(xù)構(gòu)建你的項(xiàng)目的一些方法。其實(shí)是為了顯示下邊一系列的的徽章 showImg(...
摘要:它包含兩類腳本,和地址腳本對(duì)文件定義了一系列的代碼規(guī)范通常使用官方的代碼規(guī)范標(biāo)準(zhǔn),比如的,能夠檢測(cè)出不符合代碼規(guī)范的代碼并發(fā)出警告或報(bào)錯(cuò)可設(shè)置報(bào)錯(cuò)等級(jí)。腳本能自動(dòng)修正代碼格式上不符合規(guī)范的部分。 Last-Modified: 2019年5月10日13:59:27 參考鏈接 PHP開發(fā)規(guī)范之使用phpcbf腳本自動(dòng)修正代碼格式 在PhpStorm中使用PSR2編碼規(guī)范phpcbf腳本自...
摘要:的使命是實(shí)現(xiàn)框架之間的互操作性。個(gè)人和官方都認(rèn)為開發(fā)者應(yīng)該遵循更為嚴(yán)格的代碼標(biāo)準(zhǔn),在現(xiàn)代的生態(tài)系統(tǒng)中,風(fēng)格統(tǒng)一,可以更好的讓其他開發(fā)者理解代碼。記錄的消息用于診斷檢查和排除應(yīng)用中的操作穩(wěn)定性和性能方面的問題。 原文是在我自己博客中,小伙伴也可以點(diǎn)閱讀原文進(jìn)行跳轉(zhuǎn)查看,還有好聽的背景音樂噢~ ????PSR是PHP Standards Recommendation的簡(jiǎn)稱,意為PHP推薦標(biāo)...
閱讀 2502·2021-11-15 18:14
閱讀 1725·2021-10-14 09:42
閱讀 3769·2021-10-11 10:58
閱讀 3965·2021-10-09 09:44
閱讀 2427·2021-09-26 09:55
閱讀 2451·2021-09-24 10:38
閱讀 2043·2021-09-04 16:48
閱讀 3280·2021-09-02 15:21