PHP的PSR2規(guī)范 和PHP-CodeSniffer 的介紹_第1頁
PHP的PSR2規(guī)范 和PHP-CodeSniffer 的介紹_第2頁
PHP的PSR2規(guī)范 和PHP-CodeSniffer 的介紹_第3頁
PHP的PSR2規(guī)范 和PHP-CodeSniffer 的介紹_第4頁
PHP的PSR2規(guī)范 和PHP-CodeSniffer 的介紹_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PHP_CodeSniffer的應(yīng)用PHP_CodeSniffer是PEAR中的一個用PHP5寫的用來檢查嗅探PHP代碼是否有違反一組預(yù)先設(shè)置好的編碼標(biāo)準(zhǔn)的一個包,它能分析PHP程序,JAVASCRIP和CSS文件并且檢查出哪些是與定義好的代碼風(fēng)格相違背的。它是確保你的代碼簡潔一致的必不可少的開發(fā)工具,甚至還可以幫助程序員減少一些語義錯誤。它必須是在linux環(huán)境下運行,安裝和使用網(wǎng)上有很多教程。認(rèn)識PHP_CodeSnifferPHP的PSR2規(guī)范PSR-0(AutoloadingStandard)自動加載標(biāo)準(zhǔn)PSR-1(BasicCodingStandard)基礎(chǔ)編碼標(biāo)準(zhǔn)PSR-2(CodingStyleGuide)編碼風(fēng)格向?qū)SR-3(LoggerInterface)日志接口FIG組織在制定跟PHP相關(guān)規(guī)范,簡稱PSR。目前已有4個代碼規(guī)范,為了減少不同開發(fā)者在瀏覽代碼時減少認(rèn)知的差異。為此列舉一組如何格式化PHP代碼的共用規(guī)則。各個成員項目的共性組成了本文的樣式規(guī)則。當(dāng)不同的開發(fā)者在不同的項目中合作時,將會在這些不同的項目中使用一個共同的標(biāo)準(zhǔn)。因此,本指南的好處不在于規(guī)則本身,而在于共用這些規(guī)則。RFC2119中的必須(MUST),不可(MUSTNOT),建議(SHOULD),不建議(SHOULDNOT),可以/可能(MAY)等關(guān)鍵詞將在本節(jié)用來做一些解釋性的描述。PSR2介紹1、代碼必須遵守

PSR-1。2、代碼必須使用4個空格來進(jìn)行縮進(jìn),而不是用制表符(

tab)。3、一行代碼的長度不建議有硬限制;軟限制必須為120個字符,建議每行代碼80個字符或者更少。4、在命名空間(namespace)的聲明下面必須有一行空行,并且在導(dǎo)入(use)的聲明下面也必須有一行空行。5、類(class)的左大括號必須放到其聲明下面自成一行,右大括號則必須放到類主體下面自成一行。6、方法(method)的左大括號必須放到其聲明下面自成一行,右大括號則必須放到方法主體的下一行。7、所有的屬性(property)和方法(method)

必須有可見性聲明;抽象(abstract)和終結(jié)(final)聲明必須在可見性聲明之前;而靜態(tài)(static)聲明必須在可見性聲明之后。譯注:屬性:private、protected以及public這幾個封裝屬性、函式用的文字。8、在控制結(jié)構(gòu)(controlstructure)關(guān)鍵字的后面必須有一個空格;而方法(method)和函數(shù)(function)的關(guān)鍵字的后面不可有空格。9、控制結(jié)構(gòu)的左大括號必須跟其放在同一行,右大括號必須放在該控制結(jié)構(gòu)代碼主體的下一行。10、控制結(jié)構(gòu)的左括號之后不可有空格,右括號之前也不可有空格。1.總覽這個示例中簡單展示了上文中提到的一些規(guī)則:

1.1范例2.1基礎(chǔ)代碼規(guī)范代碼必須遵守

PSR-1

中的所有規(guī)則。2.2源文件所有的PHP源文件必須使用UnixLF(換行)作為行結(jié)束符。所有PHP源文件必須以一個空行結(jié)束。純PHP代碼源文件的關(guān)閉標(biāo)簽?>

必須省略。2.3.行行長度不可有硬限制。行長度的軟限制必須是120個字符;對于軟限制,代碼風(fēng)格檢查器必須警告但不可報錯。一行代碼的長度不建議超過80個字符;較長的行建議拆分成多個不超過80個字符的子行。在非空行后面不可有空格??招锌梢杂脕碓鰪?qiáng)可讀性和區(qū)分相關(guān)代碼塊。一行不可多于一個語句。2.通則2.4.縮進(jìn)代碼必須使用4個空格,且不可使用制表符來作為縮進(jìn)。注意:代碼中只使用空格,且不和制表符混合使用,將會對避免代碼差異,補(bǔ)丁,歷史和注解中的一些問題有幫助??崭竦氖褂眠€可以使通過調(diào)整細(xì)微的縮進(jìn)來改進(jìn)行間對齊變得更加的簡單。2.5.關(guān)鍵字和True/False/NullPHP關(guān)鍵字(keywords)必須使用小寫字母。PHP常量true,

false和null

必須使用小寫字母。命名空間(namespace)的聲明后面必須有一行空行。所有的導(dǎo)入(use)聲明必須放在命名空間(namespace)聲明的下面。一句聲明中,必須只有一個導(dǎo)入(use)關(guān)鍵字。在導(dǎo)入(use)聲明代碼塊后面必須有一行空行。示例:3.

命名空間(Namespace)和導(dǎo)入(Use)聲明4.1.

擴(kuò)展(extend)和實現(xiàn)(implement)一個類的擴(kuò)展(extend)和實現(xiàn)(implement)關(guān)鍵詞必須和類名(classname)在同一行。類(class)的左大括號必須放在下面自成一行;右大括號必須放在類(class)主體的后面自成一行。4.

類(class),屬性(property)和方法(method)實現(xiàn)(implement)列表可以被拆分為多個縮進(jìn)了一次的子行。如果要拆成多個子行,列表的第一項必須要放在下一行,并且每行必須只有一個接口(interface)。所有的屬性(property)都必須聲明其可見性。變量(var)關(guān)鍵字不可用來聲明一個屬性(property)。一條語句不可聲明多個屬性(property)。屬性名(propertyname)

不推薦用單個下劃線作為前綴來表明其保護(hù)(protected)或私有(private)的可見性。一個屬性(property)聲明看起來應(yīng)該像下面這樣。4.2.

屬性(property)所有的方法(method)都必須聲明其可見性。方法名(methodname)

不推薦用單個下劃線作為前綴來表明其保護(hù)(protected)或私有(private)的可見性。方法名(methodname)在其聲明后面不可有空格跟隨。其左大括號必須放在下面自成一行,且右大括號必須放在方法主體的下面自成一行。左括號后面不可有空格,且右括號前面也不可有空格。一個方法(method)聲明看來應(yīng)該像下面這樣。注意括號,逗號,空格和花括號的位置:4.3.

方法(method)在參數(shù)列表中,逗號之前不可有空格,而逗號之后則必須要有一個空格。方法(method)中有默認(rèn)值的參數(shù)必須放在參數(shù)列表的最后面。4.4.

方法(method)的參數(shù)參數(shù)列表可以被拆分為多個縮進(jìn)了一次的子行。如果要拆分成多個子行,參數(shù)列表的第一項必須放在下一行,并且每行必須只有一個參數(shù)。當(dāng)參數(shù)列表被拆分成多個子行,右括號和左花括號之間必須又一個空格并且自成一行。當(dāng)出現(xiàn)abstract以及final聲明時,一定(MUST)要在將之聲明于可視屬性(visbility)之前。當(dāng)出現(xiàn)static聲明時,一定(MUST)要將之聲明于可視屬性(visbility)之后。4.5.

抽象(abstract),終結(jié)(final)和

靜態(tài)(static)當(dāng)建立一個方法(method)或是函式(function)時,在函式名稱以及開始括號之間一定不要有空白,而開始括號后與結(jié)束括號前也一定不要(MUSTNOT)有空白。在參數(shù)列所用的逗號前一定不要有空白,而每個逗號后一要有空白。參數(shù)列可以拆成多行,而每行都縮排。若是要這么做,第一個參數(shù)一定要再下一行,而且每行就一定只有一個參數(shù)。4.6.調(diào)用方法和函數(shù)下面是對于控制結(jié)構(gòu)代碼風(fēng)格的概括:在控制結(jié)構(gòu)的關(guān)鍵詞之后一定要用一個空白隔開。在左括號“(”之后一定不要有空白。在右括號“)”之前一定不要有空白。在右括號“)”以及開始大(花)括號”{“之間一定要有一個空白隔開??刂平Y(jié)構(gòu)的代碼主體必須進(jìn)行一次縮進(jìn)??刂平Y(jié)構(gòu)的右花括號“}”必須主體的下一行。每個控制結(jié)構(gòu)的代碼主體必須要被包覆在成對的大括號之間。這樣可是使代碼看上去更加標(biāo)準(zhǔn)化,并且加入新代碼的時候還可以因此而減少引入錯誤的可能性。5.控制結(jié)構(gòu)一個if結(jié)構(gòu)看起來如下。請注意括號、空白以及大括號的位置;還有else以及elseif跟結(jié)束的大括號“}”在主體前的同一行里。5.1:

if,elseif,else一個switch結(jié)構(gòu)看起來如下。請注意括號、空白以及大括號的位置。case敘述一定要比switch再縮排一次,而關(guān)鍵詞break(或其他結(jié)束關(guān)鍵詞)的縮排層級一定是同于case的程序本體。如果一個有主體代碼的case結(jié)構(gòu)故意的繼續(xù)向下執(zhí)行則必須要有一個類似于//nobreak的注釋。5.2.

switch,case下面是一個while循環(huán)控制結(jié)構(gòu)的示例,注意其中括號,空格和大括號的位置。同樣地,一個dowhile結(jié)構(gòu)看起來如下。請注意括號、空白以及大括號的位置。5.3.

while,dowhile一個for敘述看起來如下。請注意括號、空白以及大括號的位置。5.4for下面是一個foreach循環(huán)控制結(jié)構(gòu)的示例,注意其中括號,空格和大括號的位置。5.5foreachtrycatch敘述如下。請注意括號、空白以及大括號位置。5.6.

try,

catch聲明閉包時所用的function關(guān)鍵字之后必須要有一個空格,而use關(guān)鍵字的前后都要有一個空格。閉包的左花括號必須跟其在同一行,而右大括號必須在閉包主體的下一行。閉包的參數(shù)列表和變量列表的左括號后面不可有空格,右括號的前面也不可有空格。閉包的參數(shù)列表和變量列表中逗號前面不可有空格,而逗號后面則必須有空格。閉包的參數(shù)列表中帶默認(rèn)值的參數(shù)必須放在參數(shù)列表的結(jié)尾部分。下面是一個閉包的示例。注意括號,空格和大括號的位置。6.閉包參數(shù)列表和變量列表可以被拆分成多個縮進(jìn)了一級的子行。如果要拆分成多個子行,列表中的第一項必須放在下一行,并且每一行必須只放一個參數(shù)或變量。當(dāng)列表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論