亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP代碼規范

2019-11-08 01:58:05
字體:
來源:轉載
供稿:網友

一、文件格式

1. 對于只含有 php 代碼的文件,我們將在文件結尾處忽略掉 "?>" 。這是為了防止多余的空格或者其它字符影響到代碼。

例如:

<?php

$foo = 'foo';

2. 縮進應該能夠反映出代碼的邏輯結果,盡量使用四個空格,禁止使用制表符TAB,因為這樣能夠保證有跨客戶端編程器軟件的靈活性。

例如:

if (1 == $x) {

    $indented_code = 1;

    if (1 == $new_line) {

        $more_indented_code = 1;

    }

}

3. 變量賦值必須保持相等間距和排列。

例如:

$variable = 'demo';

$var      = 'demo2';

4. 每行代碼長度應控制在80個字符以內,最長不超過120個字符。因為 linux 讀入文件一般以80列為單位,就是說如果一行代碼超過80個字符,那么系統將為此付出額外操作指令。這個雖然看起來是小問題,但是對于追求完美的程序員來說也是值得注意并遵守的規范。

5. 每行結尾不允許有多余的空格。

二、命名約定

1. 類文件都是以“.class.php“為后綴,且類文件名只允許字母,使用駝峰法命名,并且首字母大寫,例如:DbMySQL.class.php 。

2. 配置和函數等其他類庫文件之外的文件一般是分別以“.inc.php“和”.php“為后綴,且文件名命名使用小寫字母和下劃線的方式,多個單詞之間以下 劃線分隔,例如config.inc.php , common.php,install_function.php 。

3. 確保文件的命名和調用大小寫一致,是由于在類Unix系統上面,對大小寫是敏感的。

4. 類名和文件名一致(包括上面說的大小寫一致),且類名只允許字母,例如 UserAction類的文件命名是UserAction.class.php, InfoModel類的文件名是InfoModel.class.php 。

5. 控制器類以Action為后綴,例如 UserAction、InfoAction ,模型類以Model為后綴,例如UserModel、InfoModel ,其他類也分別以相應分類為后綴,例如Service 、Widget。

6. 方法名只允許由字母組成,下劃線是不允許的,首字母要小寫,其后每個單詞首字母要大寫,即所謂的 “駝峰法命名” 規則,且越詳細越好,應該能夠描述清楚該方法的功能,例如switchModel、findPage。

7. 屬性的命名只允許由字母組成,下劃線是不允許的,首字母要小寫,其后每個單詞首字母要大寫,即所謂的 “駝峰法命名” 規則,例如tablePRefix、tableName 。

8. 對于對象成員的訪問,我們必須始終使用 “get” 和 “set” 方法。例如:

class Foo

{

    protected $_testObj;

    public function getTestObj()

    {

        return $this->_testObj;

    }

    public function setTestObj($testObj)

    {

        $this->testObj = $_testObj;

    }

}

9. 當類成員方法被聲明為 private 時,必須分別以雙下劃線 "__"為開頭;被聲明為 protected 時,必須分別以單下劃線 "_" 為開頭;一般情況下的方法不含下劃線。例如 :

class Foo

{

    private function __example()

    {

        // ...

    }

    protected function _example()

    {

        // ...

    }

    public function example()

    {

        // ...

    }

}

10. 如果我們需要把一些經常使用的方法定義為全局函數,那么應該把它們以靜態 (static) 的形式定義在類中。例如:

class Think

{

    // ...

    static public function autoload($classname)

    {

        // ...

    }

}

11. 被聲明為 private的類成員屬性必須由雙下劃線 "__" 作為開頭;被聲明為 protected 的類成員屬性必須由下劃線 "_" 作為開頭;而聲明為 public 的成員屬性則在任何時候都不允許含有下劃線。

12. 函數的命名使用小寫字母和下劃線的方式,且越詳細越好,應該能夠描述清楚該函數的功能,例如 get_client_ip

13. 當方法或函數參數不一定需要被賦值的時候,用 "null" 來代替 "false" 作為函數參數的默認值,除非該參數是 boolean 值。

14. 變量只允許由小寫字母和下劃線組成,且建議用描述性的變量的命名,越詳細越好,以至于像 $i 或 $n 等等都是不鼓勵使用的。

15. 類中的常量 constant 和全局范圍內常量define,只能由大寫字母和下劃線組成,各個單詞之間以下劃線分割。

16. boolean 值和 null 值都采用小寫。

三、編碼風格

1. php 代碼必須以完整的形式來定界(<?php … ?>),即不要使用php 短標簽(<? … ?>),且保證在關閉標簽后不要有任何空格。

2. 當一個字符串是純文本組成的時候(即不含有變量),則必須總是以單引號(')作為定界符。例如:

$a = 'Example String';

3. 變量替換中的變量只允許用 $+變量名 的形式。例如:

$greeting = "Hello $name, welcome back!";   // 允許

$greeting = "Hello {$name}, welcome back!"; // 允許

$greeting = "Hello ${name}, welcome back!"; // 不允許

 當用點號 "." 連接各字符串的時候,字符串與點號間必須用一個空格隔開,且允許把它分割成多行以增強可讀性。在這種情況下,點號 "." 必須與等于號 "=" 對齊。例如:

$sql = "SELECT `id`, `name` " . " FROM `people` "

      . "WHERE `name` = 'Susan' "

      . "ORDER BY `name` ASC ";

 當用 array 類型符號來構造數組的時候,必須在每個逗號之后加上一個空格來增強可讀性。例如:$sampleArray = array(1, 2, 3, 'Think', 'SNS');

 4. 當使用 array 類型符聲明關聯數組的時候,我們鼓勵把它分成多個行,只是我們必須同時保證每行的鍵與值的對齊,以保持美觀。例如:

$sampleArray = array(

                   'firstKey'  => 'firstValue',

                   'secondKey' => 'secondValue'

               );

5. 大括號的開始必須在類名的下一行頂格。例如:

class Think

{

    // ...

}

6. 類中的所有代碼都必須用四個空格來進行縮進。

7. 每個 php 文件只允許聲明一個類。在類文件里面寫其它代碼是允許的,但并不鼓勵這樣做。假如真要附加代碼的話,必須用空行來分隔。

8. 任何類變量的聲明都必須放在類頂部,先于任何函數的聲明。

9. 不允許用 var 符號來聲明變量,類成員變量必須以 private,protected 和 public 來聲明。其次,把類成員聲明為 public 而直接引用雖然是允許的,但通常更好的方法是使用 get 和 set 方法來訪問類成員。

10. 方法必須總是用 private,protected 或者 public 來聲明其作用域。

11. 靜態 static 方法應該聲明其作用域,且不應該再被聲明為 private 私有,而應該為 protected 或者public ,如果只是不想被子類繼承,則應該用 final 聲明它們。

12. 函數或方法的初始大括號應該在函數聲明的下一行頂格。例如: 

function get_client_ip()

{

    // …

}

13. 在函數或方法名與參數括號之間不允許出現多余的空格。例如:

function get_client_ip()

{

    // …

}

14. 引用只允許定義在函數參數中,實時傳遞引用是禁止的。例如:

// 引用定義在函數參數-允許的

function defineRefInMethod(&$a)

{

    $a = 'a';

defineRefInMethod($b);

echo $b; // 'a'

// 實時傳遞引用-禁止的

function callTimePassRef($a)

{

    $a = 'a';

}

callTimePassRef(&$c);

echo $c; // 'a'

15. 函數或方法返回值不可以用括號包住,不然會降低可讀性,而且假如以后函數修改為返回引用的話,這將會拋出一個異常。

16. 鼓勵盡量使用類型提示,特別是在模塊設計中。例如:

class Foo

{

    public function foo(SomeInterface $object)

 

   {

    }

    public function bar(array $options)

    {

    }

}

17. 函數和方法參數必須用逗號+空格來分隔。

18. 對于參數為數組的函數,參數中的數組應該分成多行以增強可讀性。例如:

threeArguments(array(1, 2, 3), 2, 3);

threeArguments(array(1, 2, 3, 'Think', 'SNS', $a, $b, $c,56.44, $d, 500), 2, 3);

19.  基于"if", "else"和"else if"的條件控制里,我們必須用空格間隔開語句和括號,大括號的開始 "{" 必須與條件控制語句位于同一行,結束 "}" 必須總是獨占一行且頂格,控制流程內容必須用四個空格進行縮進,且不使用"elseif"。

if ($condition) {

    // ...

} else if ($_condition) {

    // ...

} else {

    // ...

}

20. 在條件控制語句的條件括號內,必須用空格將操作符與其它元素隔開。如果遇到很長的邏輯判斷,則鼓勵用內嵌括號來分割各個邏輯。例如:

if (($a != 2) and ($b == 1)) {

    $a = $b;

}

21. "switch" 條件控制語句中,必須用空格將待測參數與其它元素分隔開。例如:

switch ($num) {

    // …

}

22.  "switch" 語句的內容必須以四個空格縮進,"case" 條件控制的內容必須再加四個空格進行縮進。例如:

switch ($indentedSpaces) {

    case 2:

        echo "錯誤";

        break;

    case 4:

        echo "正確";

        break;

    default:

        break;

}

23. 在 "switch" 語句中應該總是包括 "default" 控制。

24. 有時候我們需要在 "case" 語境中省略掉 "break" 或 "return" ,這個時候我們必須為這些 "case" 語句加上 "// 此處無break" 注釋。例如:

switch ($numPeople) {

case 1: // 此處無break

case 2:

      break;

default:

      break;

}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产依人香蕉在线精品| 81精品国产乱码久久久久久| 欧美日韩国产一中文字不卡| 亚洲天堂免费在线| 在线视频一区二区| 国产日韩欧美影视| 亚洲欧美激情视频| 久久精品国产免费观看| 97色在线观看免费视频| 日韩亚洲第一页| 久久夜色撩人精品| 最近2019中文字幕大全第二页| 国产a级全部精品| 亚洲一区二区三区视频播放| 日韩精品中文字幕在线播放| 美女福利精品视频| 欧美剧在线观看| 国产午夜精品一区二区三区| 日韩小视频在线观看| 欧美成人黑人xx视频免费观看| 成人国产精品av| 中文字幕欧美在线| 国产精品中文字幕在线| 国产专区欧美专区| 久久久亚洲影院| 亚洲人成免费电影| 国产精品久久二区| 中文字幕久热精品视频在线| 成人激情在线播放| 欧美大全免费观看电视剧大泉洋| 欧美极品少妇与黑人| 成人网在线视频| 精品国产乱码久久久久久天美| 最近2019免费中文字幕视频三| 亚洲最大av网站| 久久av在线看| 国内精品一区二区三区| 亚洲乱码一区av黑人高潮| 亚洲欧美成人一区二区在线电影| 欧美重口另类videos人妖| 亚洲色图15p| 伊人伊成久久人综合网站| 久久久久久91香蕉国产| 色狠狠久久aa北条麻妃| 国产一区二区黑人欧美xxxx| 欧美激情一级欧美精品| 欧美日韩在线看| 色婷婷av一区二区三区在线观看| 日韩不卡在线观看| 精品国产一区二区在线| 91精品国产91久久| 主播福利视频一区| 国内外成人免费激情在线视频| 欧美日韩激情小视频| 国内精品视频一区| 欧美精品在线第一页| 亚洲第一黄色网| 亚洲成av人影院在线观看| 国产精品久久久久久久久久| 日韩国产高清污视频在线观看| 亚洲一区二区久久| 在线观看久久久久久| 国产精品爽爽爽爽爽爽在线观看| 国产91精品黑色丝袜高跟鞋| 日韩网站免费观看高清| 国产精品精品视频一区二区三区| 日韩av在线直播| 欧美性猛交xxxx黑人猛交| 亚洲国产成人精品女人久久久| 亚洲视频欧洲视频| 色综合久久久久久中文网| 欧美精品videosex性欧美| 亚洲欧洲在线播放| 亚洲成人精品久久| 久久免费视频网| 深夜精品寂寞黄网站在线观看| 中文字幕免费国产精品| 国产精品中文字幕久久久| 91免费福利视频| 国产精品视频精品视频| 日韩电影视频免费| 欧美激情乱人伦| 不卡av在线播放| 国产91在线高潮白浆在线观看| 亚洲www在线观看| 国产成一区二区| 在线一区二区日韩| 久久精品视频网站| 亚洲欧洲黄色网| 性色av一区二区三区在线观看| 日韩精品在线观看视频| 亚洲国产成人av在线| 成人国产精品久久久久久亚洲| 久久久精品欧美| 亚洲男人天堂九九视频| 久久天天躁日日躁| 亚洲福利在线看| 91精品国产91久久久久久吃药| 在线观看免费高清视频97| 久久夜色精品亚洲噜噜国产mv| 国产亚洲视频在线观看| 亚洲成色www8888| 精品一区二区三区四区在线| 欧美成人免费在线观看| 久久久久久亚洲精品中文字幕| 日本sm极度另类视频| 日韩精品久久久久久久玫瑰园| 中文字幕精品影院| 色哟哟入口国产精品| 欧美美最猛性xxxxxx| 精品亚洲国产视频| 国产精品日韩久久久久| 色老头一区二区三区| 亚洲成人av在线播放| 国产视频精品xxxx| 亚洲欧美中文日韩v在线观看| 久久影视三级福利片| 久久久久亚洲精品国产| 欧美精品久久久久久久| 亚洲黄色成人网| 国产日韩欧美在线| 欧美性受xxxx黑人猛交| 精品magnet| 国内免费精品永久在线视频| 中文在线不卡视频| 色哟哟亚洲精品一区二区| 美女视频久久黄| 国产精品久久久久久久久久| 亚洲精品日产aⅴ| 欧美一级黄色网| 久久综合九色九九| 欧美亚洲在线观看| 中文字幕免费精品一区高清| 中文字幕精品在线视频| 国产在线精品一区免费香蕉| 国产成人精品日本亚洲专区61| 亚洲女人初尝黑人巨大| 成人精品在线观看| 久久99久久99精品免观看粉嫩| 亚洲精品av在线| 日韩专区在线观看| 国外成人免费在线播放| 久久激情视频免费观看| 国产在线播放91| 国产精品女视频| 久久久国产精彩视频美女艺术照福利| 国产日韩精品综合网站| 亚洲成人在线网| 亚洲在线观看视频| 国产日韩欧美影视| 揄拍成人国产精品视频| 91高清免费在线观看| 国产精品一区久久久| 久久久久久久久久av| 不卡中文字幕av| 国产成人亚洲综合| 在线播放国产一区二区三区| 久久亚洲精品毛片| 人妖精品videosex性欧美| 亚洲一区二区三区在线免费观看| 日本精品一区二区三区在线播放视频| 久久久久久久亚洲精品| 亚洲天堂开心观看| 国产69精品久久久久9999|