什么是PHP編碼風(fēng)格規(guī)范

這篇文章運(yùn)用簡(jiǎn)單易懂的例子給大家介紹什么是PHP編碼風(fēng)格規(guī)范,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),烏拉特中網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:烏拉特中等地區(qū)。烏拉特中做網(wǎng)站價(jià)格咨詢:18980820575

由于PHP的靈活性,很多人寫起代碼來(lái)也不講求一個(gè)好的代碼規(guī)范,使得本就靈活的PHP代碼看起來(lái)很亂,其實(shí)PSR規(guī)范中的PSR-1和PSR-2已經(jīng)定義了在PHP編碼中的一些規(guī)范,只要我們好好遵守這些規(guī)范,即使是使用靈活的腳本語(yǔ)言,也能寫出非常漂亮工整的代碼。首先我們來(lái)看一下已經(jīng)通過(guò)的PSR規(guī)范,然后大致講解一下PSR-1和PSR-2規(guī)范的一些具體要求。

已通過(guò)的PSR

PSR編號(hào)名稱說(shuō)明
1基礎(chǔ)編碼規(guī)范關(guān)于PHP標(biāo)簽和基本命名約定等基礎(chǔ)的規(guī)范
2編碼風(fēng)格規(guī)范關(guān)于大括號(hào)的位置和參數(shù)列表等編碼格式的規(guī)定
3日志接口規(guī)范關(guān)于日志級(jí)別以及記錄日志的行為的規(guī)定
4自動(dòng)加載規(guī)范關(guān)于類和命名空間的命名約定,以及它們與文件系統(tǒng)間映射的規(guī)定
6緩存接口規(guī)范關(guān)于緩存管理的規(guī)定,其中包括數(shù)據(jù)類型、緩存項(xiàng)的生存周期、錯(cuò)誤處理等
7HTTP消息接口規(guī)范關(guān)于HTTP請(qǐng)求和響應(yīng)的約定

PSR-1基礎(chǔ)編碼規(guī)范

1、開(kāi)閉標(biāo)簽

首先,PHP代碼必須以<?php或<?=標(biāo)簽開(kāi)始。換言之,我們不應(yīng)該再使用短標(biāo)簽<?或其它變化形式。

2、副作用

PHP文件要么聲明類、接口、函數(shù)等,要么執(zhí)行邏輯操作(如讀寫文件或向?yàn)g覽器發(fā)送輸出),但不應(yīng)該同時(shí)兼具兩者。

3、命名

類的命名必須遵守大寫開(kāi)頭的駝峰式命名規(guī)范。換言之,類名應(yīng)當(dāng)以大寫字母開(kāi)頭。屬性的命名方式?jīng)]有強(qiáng)制要求,但應(yīng)該保持一致。方法名稱必須符合小寫開(kāi)頭的駝峰式命名規(guī)范。類常量中的所有字母必須大寫,單詞之間以下劃線分隔。

PSR-2編碼風(fēng)格規(guī)范

1、PSR-1要求PHP代碼以<?php開(kāi)頭。

PSR-2規(guī)定,純PHP文件不應(yīng)該以一個(gè)?>標(biāo)簽結(jié)束,而應(yīng)該以一個(gè)空白行結(jié)束。

2、namespace聲明后應(yīng)該插入一個(gè)空白行,use聲明語(yǔ)句塊后也應(yīng)該要有一個(gè)空白行。

不要在同一行代碼中進(jìn)行多次use聲明。

3、類的開(kāi)始和結(jié)束

class關(guān)鍵字、類名,以及extends和implements關(guān)鍵字必須在同一行中。如果一個(gè)類實(shí)現(xiàn)了多個(gè)接口,那么這些接口名可以在類聲明的同一行中,也可以各占一行。如果選擇將這些接口名放在多行中,那么第一個(gè)接口名必須自成一行,而不是跟在implements關(guān)鍵字后面。類的開(kāi)始花括號(hào)({)應(yīng)該寫在函數(shù)聲明后自成一行,結(jié)束花括號(hào)(})也應(yīng)該寫在類體后自成一行。也就是說(shuō),類聲明看起來(lái)如下所示

class EarthGame extends Game implements
    Playable,    
    Savable
{ 
       //類體
}

也可以將類名與類聲明放在同一行中。

class EarthGame extends Game implements Playble, Savable
{ 
    //類體
 }

4、屬性聲明

每個(gè)屬性都必須有訪問(wèn)修飾符(public、private或protected)。不可以使用關(guān)鍵字var聲明屬性。PSR-1中已經(jīng)涵蓋了屬性名的規(guī)范:可以使用下劃線、小寫駝峰式命名或大寫駝峰式命名方式,但應(yīng)該保持一致。(個(gè)人推薦屬性采用小寫式駝峰)

5、方法的開(kāi)始和結(jié)束

所有方法必須具有訪問(wèn)修飾符(public、private或protected)。訪問(wèn)修飾符必須在abstract或final之后,static之前。具有默認(rèn)值得方法參數(shù)應(yīng)該放在參數(shù)列表的末尾。

●單行聲明
  方法的開(kāi)始花括號(hào)({)應(yīng)該寫在方法名后自成一行,結(jié)束花括號(hào)(})也應(yīng)該寫在方法體后自成一行(直接跟在方法代碼之后)。方法參數(shù)列表不應(yīng)該以空格開(kāi)始或結(jié)束(即應(yīng)該緊貼包裹著它們的圓括號(hào))。對(duì)于每個(gè)參數(shù),參數(shù)名(或默認(rèn)值)后面應(yīng)該有一個(gè)逗號(hào),且逗號(hào)后面有一個(gè)空格。這聽(tīng)起來(lái)似乎有些復(fù)雜,如下所示:

final public static function generateTile(int $diamondCount, bool $polluted = false)
{
   //方法體
}

●多行聲明
  如果方法有很多參數(shù),那么單行方法聲明是不實(shí)際的。此時(shí)我們可以分割參數(shù)列表,以便將每個(gè)參數(shù)(包括類型、參數(shù)變量、默認(rèn)值和逗號(hào))單獨(dú)放在縮進(jìn)的一行中。這種情況下,結(jié)束圓括號(hào)應(yīng)該放在參數(shù)列表后面一行中,并與方法聲明的開(kāi)始位置對(duì)齊。開(kāi)始花括號(hào)({)應(yīng)該在同一行的結(jié)束圓括號(hào)之后,以空格分隔。方法體應(yīng)該從新的一行開(kāi)始。同樣,這聽(tīng)起來(lái)似乎很復(fù)雜,以下示例應(yīng)該能幫助你理解這條規(guī)定。

public function __construct(
    int $size,
    string $name,
    bool $warparound = false,
    bool $aliens = false
) {
  //方法體
 }

6、行與縮進(jìn)

代碼應(yīng)該使用4個(gè)空格符來(lái)縮進(jìn),而不是使用制表符。我們可以檢查編輯器設(shè)置,將其設(shè)置為按下Tab鍵時(shí)使用4個(gè)空格而不是制表符。每行代碼的長(zhǎng)度不應(yīng)該超過(guò)120個(gè)字符。

7、方法與函數(shù)調(diào)用

方法名稱和開(kāi)始圓括號(hào)之間不能有空格。方法調(diào)用中的參數(shù)列表的規(guī)則與方法聲明中的參數(shù)列表規(guī)則相同。換言之,對(duì)于單行調(diào)用,開(kāi)始圓括號(hào)后或結(jié)束圓括號(hào)前不能有空格。每個(gè)參數(shù)之后應(yīng)該緊跟一個(gè)逗號(hào),下一個(gè)參數(shù)前應(yīng)該有一個(gè)空格。如果需要使用多行代碼進(jìn)行方法調(diào)用,那么每個(gè)參數(shù)應(yīng)該自成一行并縮進(jìn),而且結(jié)束圓括號(hào)也應(yīng)該自成一行。

$earthGanme = new EarthGame( 
     5,  
     'earth',
      true,
      true
 );
$earthGame::generateTile(5, true);

8、流程控制

流程控制關(guān)鍵字(if、for、while等)后面必須緊跟一個(gè)空格。但是,開(kāi)始圓括號(hào)后不能有空格。同樣,結(jié)束圓括號(hào)前不能有空格。因此內(nèi)容應(yīng)該緊貼在括號(hào)內(nèi)的。與類和(單行)函數(shù)聲明相比,流程控制代碼的開(kāi)始花括號(hào)應(yīng)該與結(jié)束圓括號(hào)在同一行。結(jié)束花括號(hào)應(yīng)該自成一行。以下是一個(gè)簡(jiǎn)單的示例。

$title = [];
for ($x = 0; $x < $diamondCount; $x++) { 
   if ($polluted) {
        $title[] = new PollutionDecorator(new DiamondDecorator(new Plains()));
    } else {
        $title[] = new DiamondDecorator(new Plains());
    }
}

關(guān)于什么是PHP編碼風(fēng)格規(guī)范就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

文章標(biāo)題:什么是PHP編碼風(fēng)格規(guī)范
本文地址:http://www.muchs.cn/article14/pgdjde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站導(dǎo)航、微信公眾號(hào)、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名