《PHP 實(shí)際應(yīng)用編碼規(guī)范》要點(diǎn):
本文介紹了PHP 實(shí)際應(yīng)用編碼規(guī)范,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
《PHP 實(shí)際應(yīng)用編碼規(guī)范》是否對(duì)您有啟發(fā),歡迎查看更多與《PHP 實(shí)際應(yīng)用編碼規(guī)范》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
前言:
為了提高工作效率,保證開(kāi)發(fā)的有效性和合理性,并最大程度提高程序代碼的可讀性和可重復(fù)利用性,提高溝通效率,需要一份代碼編寫(xiě)規(guī)范,本文介紹的規(guī)范參考了Zend與PEAR編碼規(guī)范,并進(jìn)行了適當(dāng)?shù)暮?jiǎn)化和調(diào)整,盡量堅(jiān)持簡(jiǎn)約易懂.通過(guò)代碼規(guī)范,讓大家養(yǎng)成良好的代碼編寫(xiě)習(xí)慣,并減少代碼中的bug.
本規(guī)范包括PHP開(kāi)發(fā)時(shí)程序編碼中的命令規(guī)范、代碼縮進(jìn)規(guī)則、控制結(jié)構(gòu)、函數(shù)調(diào)用、函數(shù)定義、注釋、包括代碼、PHP標(biāo)記、常量命名等方面的規(guī)則.
本規(guī)范不強(qiáng)制指定和保舉某種格式,并就實(shí)際開(kāi)發(fā)中個(gè)人習(xí)慣做了一些調(diào)整,僅供大家參考.
1. 文件格式
1.1 文件標(biāo)記
所有的PHP文件,其代碼標(biāo)記均使用完整PHP標(biāo)簽,不建議使用短標(biāo)簽,對(duì)于只含有PHP代碼的文件,將在文件結(jié)尾忽略“?>”,這是因?yàn)榉乐苟嘤嗫崭窕蛘咂渌址绊懙酱a.
1.2 文件和目錄命名
程序文件和目錄名均采用有意義的英文命名,不使用拼音或者無(wú)意義的字母,只允許出現(xiàn)字母、數(shù)字、下劃線(xiàn)和中劃線(xiàn)字符,同時(shí)必須以".php"結(jié)尾,多個(gè)詞間使用駝峰法命名.
1.3 文件目錄結(jié)構(gòu)
在開(kāi)發(fā)規(guī)范、獨(dú)立的PHP項(xiàng)目時(shí),使用規(guī)范的文件目錄結(jié)構(gòu),有助于提高項(xiàng)目邏輯結(jié)構(gòu)合理性,對(duì)于拓展和合作以及團(tuán)隊(duì)開(kāi)發(fā)均有好處.
通常一個(gè)完整獨(dú)立的PHP項(xiàng)目的文件目錄結(jié)構(gòu)
2. 命名規(guī)范
2.1 變量命名
PHP中的變量用一個(gè)美元符號(hào)后面跟變量名表示.變量名區(qū)分大小寫(xiě).一個(gè)有效變量名由字母或者下劃線(xiàn)開(kāi)頭,后面跟任意數(shù)量的字母、數(shù)字、下劃線(xiàn).正常的正則表達(dá)式為:
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
不應(yīng)該在變量中使用中文等ASCII字符.
1)程序整體
程序整體以駝峰法命名,以小寫(xiě)字母開(kāi)始,同時(shí)命名要有意義
2)PHP全局變量鍵值
PHP全局變量鍵值兩邊都有“_”,中間使用駝峰法命名,如 $_GLOBAL['_beginTime_']
3)普通變量
普通變量整體采用駝峰法,建議在變量前加表示類(lèi)型的前綴,不確定類(lèi)型的以大寫(xiě)字母開(kāi)頭,函數(shù)參數(shù)不確定的類(lèi)型以大寫(xiě)字母開(kāi)頭,其他地方的變量以小寫(xiě)字母開(kāi)頭,對(duì)于一些常見(jiàn)變量,按著約定命名,并避免使用常用關(guān)鍵字或者存在模糊意義的單詞,變量應(yīng)以名詞為主,保舉:
字符串:$strName
數(shù)組:$arrName
對(duì)象:$objName
布爾值:$bool
4)函數(shù)名
函數(shù)名既要有意義,也要盡量縮寫(xiě),建議采用動(dòng)詞或者動(dòng)詞加形容詞的命名方式,如showMsg.
5)類(lèi)中的屬性
類(lèi)中的屬性變量遵循普通變量的命名規(guī)則
2.2 類(lèi)及接口命名
在面向?qū)ο蟮拇a中,其命名方式有一些特殊,類(lèi)的命名遵循以下規(guī)則:
以大寫(xiě)字母開(kāi)頭:多個(gè)單詞組成的變量名,單詞之間不用間隔,各個(gè)單詞首字母大寫(xiě);
類(lèi)名與類(lèi)文件堅(jiān)持一致;
程序中所有類(lèi)名唯一;
抽象類(lèi)應(yīng)以Abstract開(kāi)頭;
接口命名遵循以下規(guī)則:
采取和類(lèi)相同的命名規(guī)則,但是在其命名前加i字符,表示接口;
盡量堅(jiān)持和實(shí)現(xiàn)它的類(lèi)名一致;
2.3 數(shù)據(jù)庫(kù)命名
在數(shù)據(jù)庫(kù)相關(guān)的命名中,一律不出現(xiàn)大寫(xiě),詳細(xì)的命名規(guī)則如下:
1)數(shù)據(jù)庫(kù)命名遵循以下規(guī)范:
表名均使用小寫(xiě);
表名字使用統(tǒng)一的前綴,且前綴不能為空;
對(duì)于多個(gè)單詞組成的表名,使用“_”間隔.
2)表字段命名遵循以下規(guī)范:
全部使用小寫(xiě)字母命名;
多個(gè)單詞使用下劃線(xiàn)
2.4 習(xí)慣與約定
1)縮寫(xiě)
依照習(xí)慣,同時(shí)為了減小變量的長(zhǎng)度,在不影響可讀的前提下,習(xí)慣對(duì)變量進(jìn)行縮寫(xiě),常見(jiàn)于一些函數(shù)的參數(shù),如:
image -> img
string -> str
database -> db
array -> arr
count -> cnt
message -> msg
2)魔術(shù)數(shù)字
魔術(shù)數(shù)字是指直接在程序代碼里的具體數(shù)值,此類(lèi)變量盡量定義為常量.
3.注釋規(guī)范
每個(gè)程序必須提供必要的注釋,包含文件注釋,代碼塊注釋,函數(shù)注釋等.
3.1 程序注釋
程序注釋原則如下:
寫(xiě)在被注釋代碼前面,而不是很后面,對(duì)于單行語(yǔ)句,按著習(xí)慣可以把注釋放在語(yǔ)句末尾.對(duì)于大段注釋,使用“/**/”格式,通常在文件和函數(shù)注釋中使用,而代碼內(nèi)部統(tǒng)一使用“//”注釋,因?yàn)槠鋵?xiě)起來(lái)簡(jiǎn)單.注釋不宜太多.
3.2 文件注釋
文件注釋通常放在整個(gè)PHP文件頭部,其內(nèi)容包含文件版權(quán),作者,日期,版本號(hào)等重要信息.PHP中,可以參照phpdocument規(guī)范,便于利用程序自動(dòng)生成文檔.
文件注釋遵循以下規(guī)則:
本程序的描述;
作者;
項(xiàng)目名稱(chēng);
文件名稱(chēng);
日期;
版本;
使用說(shuō)明等;
文件注釋說(shuō)明
3.3 辦法和函數(shù)注釋
辦法和函數(shù)的注釋寫(xiě)在前面,通常需要標(biāo)明的信息包括函數(shù)說(shuō)明、參數(shù)類(lèi)型和返回值的類(lèi)型.
4.代碼風(fēng)格
4.1 縮進(jìn)和空格
在書(shū)寫(xiě)代碼的時(shí)候,必須注意代碼的縮進(jìn)規(guī)則:
使用4個(gè)空格作為縮進(jìn),而不是tab縮進(jìn);
變量賦值時(shí),等號(hào)左右留下空格;
為了最大程度減輕工作量,堅(jiān)持代碼美觀,建議使用大型IDE管理代碼.
4.2 語(yǔ)句斷行
代碼書(shū)寫(xiě)中應(yīng)遵循以下原則:
盡量保證程序語(yǔ)句一行就是一句;
盡量不要使一行代碼太長(zhǎng),一般控制在100個(gè)字符以?xún)?nèi);
如果一行代碼太長(zhǎng),請(qǐng)使用 “.=” 的方式斷行書(shū)寫(xiě);
執(zhí)行數(shù)據(jù)庫(kù)sql語(yǔ)句操作時(shí),盡量不要在函數(shù)內(nèi)寫(xiě)sql語(yǔ)句,而是先用變量定義sql語(yǔ)句,然后在執(zhí)行操作的函數(shù)中調(diào)用定義的變量;
小結(jié):
在開(kāi)頭就提到編碼規(guī)范的目的是提高工作效率,保證開(kāi)發(fā)的有效性和合理性,并最大程度的提高程序代碼的可讀性和可重復(fù)利用性,減少返工,提高溝通效率.好的代碼風(fēng)格,見(jiàn)代碼如見(jiàn)人.
PHP是一門(mén)腳本語(yǔ)言,本身就是一門(mén)不嚴(yán)謹(jǐn)?shù)恼Z(yǔ)言,所以規(guī)范就顯得更重要了.
強(qiáng)烈建議使用大型IDE進(jìn)行代碼開(kāi)發(fā)和管理,并使用合適的版本控制軟件,保舉PhpStorm 和 Git.
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9657.html