PHP的編碼規範

2021-07-15 14:36:11 字數 4826 閱讀 5441

一、檔案格式

1. 對於只含有 php **的檔案,我們將在檔案結尾處忽略掉 "?>" 。這是為了防止多餘的空格或者其它字元影響到**。

例如:<?php

$foo = 'foo';

2. 縮排應該能夠反映出**的邏輯結果,盡量使用四個空格,禁止使用製表符tab,因為這樣能夠保證有跨客戶端程式設計器軟體的靈活性。

例如:if (1 == $x) 

}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

public function settestobj($testobj)

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

class foo

protected function _example()

public function example()

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

class think

}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 , welcome back!"; // 允許

$greeting = "hello $, 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)

definerefinmethod($b);

echo $b; // 'a'

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

function calltimepassref($a)

calltimepassref(&$c);

echo $c; // 'a'

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

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

class foo

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)) 

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

switch ($num) 

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

switch ($indentedspaces) 

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

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

switch ($numpeople) 

php 編碼規範哪些 php編碼規範

1.php 必須以完整的形式來定界 即不要使用php 短標籤 且保證在關閉標籤後不要有任何空格。2.當乙個字串是純文字組成的時候 即不含有變數 則必須總是以單引號 作為定界符。例如 a example string 3.變數替換中的變數只允許用 變數名 的形式。例如 greeting hello n...

php 編碼規範哪些 PHP編碼規範

很多初學者對編碼規範不以為然,認為對程式開發沒有什麼幫助,甚至因為要遵循規範而影響了學習和開發的進度。或者因為經過一段時間的使用,已經形成了自己的一套風格,所以不願意去改變。這種想法是很危險的。如今的 web 開發,不再是乙個人就可以全部完成的,尤其是一些大型的專案,往往需要十幾人,甚至幾十人來共同...

php 編碼規範哪些 PHP 編碼規範

這是給小組制定的php編碼規範 該 php 編碼規範基本上是同 psr 規範的。有一部分的編碼規範 psr 中是建議,此編碼規範會強制要求。此編碼規範 是以 psr 1 psr 2 psr 2擴充套件 為藍本,並增加了相應的細節說明。通則基本編碼 php 必須使用 長標籤 或 短輸出標籤 一定不可使...