PHP編碼規範

爲何須要編碼規範?javascript

  • 爲了提升工做效率,保證開發的有效性和合理性。php

  • 爲了提升代碼可讀性和可重複利用性,從而節約溝通成本。java

本文主要參考了 PEAR 規範,並進行適當的簡化和調整。數據庫

主要介紹,命名規範註釋規範代碼風格後端

文件標記數組

全部PHP文件,代碼標記均使用完整的PHP標籤,不建議使用短標籤。微信

<?php
  echo 'Hello world';
?>

<? //短標籤不推薦 echo 'Hello world'; ?>複製代碼

文件格式框架

文件編碼 爲無 BOM 的 UTF-8。函數

􏶍純PHP類文件,文件最後 ?> 要省略。編碼

TextMate

在 "文件編碼" 中,選擇 "UTF-8(推薦)"
在 "換行符" 中,選擇 "LF(推薦)"

文件命名

程序的文件名和目錄名都採用有意義的英文命名。

不使用拼音或無心義的字母。

只容許出現字母、數字、下劃線、中劃線字符。

多個詞之間使用駝峯命名法。

//類統一採用
demoTest.class.php

//接口統一採用
demoTest.interface.php

//其餘按照各自的方式
demoTest.{style}.php

//其餘文件參照
demoTest.inc.php
demo.lib.php

文件目錄結構命名

因使用的框架不一樣,可根據實際狀況考慮目錄結構。

全局變量命名

$_GLOBAL['_startTime_']

or

$_GLOBAL['g_startTime_']複製代碼

兩邊都有「_」,中間使用駝峯命名。

普通變量命名

數據類型 命名規範
字符串 $strMyStr
數組 $arrMyArray
對象 $objMyObject
布爾值 $flagMyFlag

採用駝峯命名,建議在變量前加上變量的類型做爲前綴。

變量應該以名詞爲準,儘可能避免使用經常使用關鍵字或存在模糊意義的單詞。

私有變量,建議加上前綴"_"。

函數命名

函數名即要有意義,也要儘可能縮寫,一看就知道幹什麼。

建議單用動詞或動詞加形容詞的格式命名。

私有方法,建議在加上前綴"_"。

//例如
private function _showMsg() {
   //方法體
}複製代碼

不建議下面這樣的函數名:

public function getAdvertisementByCategoryIdAndPositionIdAndScheduleId() {
   //方法體
}複製代碼

可修改成:

public function getAd($categoryid, $positionid, $scheduleid) {
   //方法體
}複製代碼

習慣與約定

爲了減小變量的長度,在不影響可讀性的前提下,習慣對變量進行縮寫。

全稱 縮寫
image img
string str
database db
array arr
count cnt
message msg
password passwd 或 pwd
... ...

以上規範可用於,PHP代碼、JavaScript代碼、數據庫表字段命名等。

文件註釋

/** * 文件的簡述 * * PHP Version 6(PHP版本) * * @category 能夠寫部門(英文) * @package 能夠寫模塊(英文) * @author test <test@company.com> * @time 2017/02/02 11:48 * @copyright 2017 公司名稱 * @license 公司網址 license * @link test@qq.com(做者聯繫方式) */複製代碼

類註釋

/** * 類的簡述 * * @category 能夠寫部門(英文) * @package 能夠寫模塊(英文) * @author test <test@company.com> * @license 公司網址 license * @link test@qq.com(做者聯繫方式) */複製代碼

方法註釋

/** * 方法的簡述 * @param array $myArray 參數解釋 * @param string $myString 參數解釋 * @return array(返回數據類型) */複製代碼

代碼註釋

註釋寫在被註釋代碼的前面,而不是後面,但對於單行語句,註釋可寫在語句末尾。

對於大段註釋,使用 / / 進行註釋。

註釋不宜太多,你們能看的懂得行沒必要註釋。

代碼註釋應該描述爲何,而不是作什麼。

不要爲了註釋而註釋。

標註的使用

IDE 支持一些特殊註釋,能夠列出整個項目中的特殊註釋,方便後期維護和代碼檢查。

例如:

//@fixMe 表示須要修復項。

//@todo 表示須要完善的地方。

代碼風格

儘可能保證程序語句一行就是一句。

儘可能不要使一行的代碼過長,通常控制在80個字符之間。

若是一行代碼太長,請使用相似 「.=」 的方式斷行書寫。

類、方法的作大括號須要獨佔一行。

其餘控制語句等大括號和表達式同一行,並空格隔開。

class Demo {
    public function index() {
        for ($i = 1, $i < 10, $i++) {

        }
    }

    public function test() {
        if ($expr1) {
            //if body

        } elseif ($expr2) {
            //elseif body

        } else {
            //else body

        }

        foreach ($data as $key => $value) {
            //foreach body
        }

        switch ($expr1) {
            case 0:
                echo '零';
                break;
            case 1:
                echo '一';
                break;
            default:
                echo 'null';
                break;
        }

        //儘可能同等意義的變量等號對其
        $strName     = $arrUserInfo['name'];
        $strAge      = $arrUserInfo['age'];
        $strBirthday = $arrUserInfo['birthday'];
        $strHobby    = $arrUserInfo['hobby'];
    }
}複製代碼

調試代碼

不要在你的提交的代碼中包含調試代碼,就算是註釋掉了也不行。

像 var_dump() 、 print_r() 、 die() 和 exit() 這樣的函數。

PHP錯誤

運行代碼時不該該出現任何錯誤信息,並非把警告和提示信息關掉來知足這一點。

例如,毫不要直接訪問一個你沒設置過的變量,你應該先使用 isset() 函數判斷下。

最後

最後說的是,本規範不是強制,也不是標準。

「約定大於規範」,若是有的規範太死板,不適應您的團隊,您能夠不採用,按照您本身的規範便可。

推薦PHP開發IDE:PHPStorm

推薦閱讀:

Mac PHPStorm 使用心得

PHP團隊開發中遇到的那些坑,看我是如何解決的?

若是你們須要下載PDF,能夠關注微信公衆號。

回覆 「php編碼規範」 便可。

Thanks ~


做者:PHP後端開發者

免費提供技術諮詢服務(本身懂的知識)。

QQ羣:564557094。

關注微信公衆號,留言便可,看到留言後會及時回覆。

IT小圈兒
相關文章
相關標籤/搜索