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

首頁 > 編程 > PHP > 正文

PHP的PSR-2編碼風格規范的詳細介紹(代碼)

2020-03-22 18:16:54
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于PHP的PSR-2編碼風格規范的詳細介紹(代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

接下來是PSR-2 編碼風格規范,它是 PSR-1 基本代碼規范的繼承與擴展。

PSR-1 和PSR-2是PHP開發中基本的編碼規范,大家其實都可以參考學習下,雖然說每個開發者都有自己熟悉的一套開發規范,但是我覺得還是根據行業標準來編寫我們的代碼,畢竟標準都是經過驗證的了。希望能對PHP開發者有幫助吧。

1、概覽

代碼 必須 遵循 [PSR-1]() 中的編碼規范 。

代碼 必須 使用4個空格符而不是「Tab 鍵」進行縮進。

每行的字符數 應該 軟性保持在 80 個之內,理論上 一定不可 多于 120 個,但 一定不可 有硬性限制。

每個 namespace 命名空間聲明語句和 use 聲明語句塊后面,必須 插入一個空白行。

類的開始花括號({) 必須 寫在類聲明后自成一行,結束花括號(})也 必須 寫在類主體后自成一行。

方法的開始花括號({) 必須 寫在函數聲明后自成一行,結束花括號(})也 必須 寫在函數主體后自成一行。

類的屬性和方法 必須 添加訪問修飾符(private、protected 以及 html' target='_blank'>public),abstract 以及 final 必須 聲明在訪問修飾符之前,而 static 必須 聲明在訪問修飾符之后。

控制結構的關鍵字后 必須 要有一個空格符,而調用方法或函數時則 一定不可 有。

控制結構的開始花括號({) 必須 寫在聲明的同一行,而結束花括號(}) 必須 寫在主體后自成一行。

控制結構的開始左括號后和結束右括號前,都 一定不可 有空格符。

1.1. 例子

以下例子程序簡單地展示了以上大部分規范:

 ?phpnamespace Vendor/Package;use FooInterface;use BarClass as Bar;use OtherVendor/OtherPackage/BazClass;class Foo extends Bar implements FooInterface public function sampleFunction($a, $b = null) if ($a === $b) { bar(); } elseif ($a $b) { $foo- bar($arg1); } else { BazClass::bar($arg2, $arg3); final public static function bar() // 方法的內容}

2. 通則

2.1 基本編碼準則

代碼 必須 符合 [PSR-1]() 中的所有規范。

2.2 文件

所有PHP文件 必須 使用 Unix LF (linefeed) 作為行的結束符。

所有PHP文件 必須 以一個空白行作為結束。

純PHP代碼文件 必須 省略最后的 ? 結束標簽。

2.3. 行

行的長度 一定不可 有硬性的約束。

軟性的長度約束 必須 要限制在 120 個字符以內,若超過此長度,帶代碼規范檢查的編輯器 必須 要發出警告,不過 一定不可 發出錯誤提示。

每行 不該 多于80個字符,大于80字符的行 應該 折成多行。

非空行后 一定不可 有多余的空格符。

空行 可以 使得閱讀代碼更加方便以及有助于代碼的分塊。

每行 一定不可 存在多于一條語句。

2.4. 縮進

代碼 必須 使用4個空格符的縮進,一定不可 用 tab鍵。

備注:使用空格而不是「tab鍵縮進」的好處在于,

避免在比較代碼差異、打補丁、重閱代碼以及注釋時產生混淆。

并且,使用空格縮進,讓對齊變得更方便。

2.5. 關鍵字 以及 True/False/Null

PHP所有 關鍵字 必須 全部小寫。

常量 true 、false 和 null 也 必須 全部小寫。

3. namespace 以及 use 聲明

namespace 聲明后 必須 插入一個空白行。

所有 use 必須 在 namespace 后聲明。

每條 use 聲明語句 必須 只有一個 use 關鍵詞。

use 聲明語句塊后 必須 要有一個空白行。

例如:

 ?phpnamespace Vendor/Package;use FooClass;use BarClass as Bar;use OtherVendor/OtherPackage/BazClass;

4. 類、屬性和方法

此處的「類」泛指所有的「class類」、「接口」以及「traits 可復用代碼塊」。

4.1. 擴展與繼承

關鍵詞 extends 和 implements 必須 寫在類名稱的同一行。

類的開始花括號 必須 獨占一行,結束花括號也 必須 在類主體后獨占一行。

 ?phpnamespace Vendor/Package;use FooClass;use BarClass as Bar;use OtherVendor/OtherPackage/BazClass;class ClassName extends ParentClass implements /ArrayAccess, /Countable // 這里面是常量、屬性、類方法}

implements 的繼承列表也 可以 分成多行,這樣的話,每個繼承接口名稱都 必須 分開獨立成行,包括第一個。

 ?phpnamespace Vendor/Package;use FooClass;use BarClass as Bar;use OtherVendor/OtherPackage/BazClass;class ClassName extends ParentClass implements /ArrayAccess, /Countable, /Serializable // 這里面是常量、屬性、類方法}

4.2. 屬性

每個屬性都 必須 添加訪問修飾符。

一定不可 使用關鍵字 var 聲明一個屬性。

每條語句 一定不可 定義超過一個屬性。

不該 使用下劃線作為前綴,來區分屬性是 protected 或 private。

以下是屬性聲明的一個范例:

 ?phpnamespace Vendor/Package;class ClassName public $foo = null;}

4.3方法

所有方法都 必須 添加訪問修飾符。

不該 使用下劃線作為前綴,來區分方法是 protected 或 private。

方法名稱后 一定不可 有空格符,其開始花括號 必須 獨占一行,結束花括號也 必須 在方法主體后單獨成一行。參數左括號后和右括號前 一定不可 有空格。

一個標準的方法聲明可參照以下范例,留意其括號、逗號、空格以及花括號的位置。

 ?phpnamespace Vendor/Package;class ClassName public function fooBarBaz($arg1, $arg2, $arg3 = []) // method body}

4.4. 方法的參數

參數列表中,每個逗號后面 必須 要有一個空格,而逗號前面 一定不可 有空格。

有默認值的參數,必須 放到參數列表的末尾。

 ?phpnamespace Vendor/Package;class ClassName public function foo($arg1, $arg2, $arg3 = []) // method body}

參數列表 可以 分列成多行,這樣,包括第一個參數在內的每個參數都 必須 單獨成行。

拆分成多行的參數列表后,結束括號以及方法開始花括號 必須 寫在同一行,中間用一個空格分隔。

 ?phpnamespace Vendor/Package;class ClassName public function aVeryLongMethodName( ClassTypeHint $arg1, $arg2, array $arg3 = [] // 方法的內容}

4.5. abstract 、 final 、 以及 static

需要添加 abstract 或 final 聲明時,必須 寫在訪問修飾符前,而 static 則 必須 寫在其后。

 ?phpnamespace Vendor/Package;abstract class ClassName protected static $foo; abstract protected function zim(); final public static function bar() // method body}

4.6. 方法及函數調用

方法及函數調用時,方法名或函數名與參數左括號之間 一定不可 有空格,參數右括號前也 一定不可 有空格。每個參數前 一定不可 有空格,但其后 必須 有一個空格。

 ?phpbar();$foo- bar($arg1);Foo::bar($arg2, $arg3);參數 可以 分列成多行,此時包括第一個參數在內的每個參數都 必須 單獨成行。 ?php$foo- bar( $longArgument, $longerArgument, $muchLongerArgument);

5. 控制結構

控制結構的基本規范如下:

控制結構關鍵詞后 必須 有一個空格。左括號 ( 后 一定不可 有空格。右括號 ) 前也 一定不可 有空格。右括號 ) 與開始花括號 { 間 必須 有一個空格。結構體主體 必須 要有一次縮進。結束花括號 } 必須 在結構體主體后單獨成行。

每個結構體的主體都 必須 被包含在成對的花括號之中,

這能讓結構體更加結構話,以及減少加入新行時,出錯的可能性。

5.1. if 、elseif 和 else

標準的 if 結構如下代碼所示,請留意「括號」、「空格」以及「花括號」的位置,

注意 else 和 elseif 都與前面的結束花括號在同一行。

 ?phpif ($expr1) { // if body} elseif ($expr2) { // elseif body} else { // else body;}

應該 使用關鍵詞 elseif 代替所有 else if ,以使得所有的控制關鍵字都像是單獨的一個詞。

5.2. switch 和 case

標準的 switch 結構如下代碼所示,留意括號、空格以及花括號的位置。

case 語句 必須 相對 switch 進行一次縮進,而 break 語句以及 case 內的其它語句都 必須 相對 case進行一次縮進。

如果存在非空的 case 直穿語句,主體里 必須 有類似 // no break 的注釋。

 ?phpswitch ($expr) { case 0: echo First case, with a break  break; case 1: echo Second case, which falls through  // no break case 2: case 3: case 4: echo Third case, return instead of break  return; default: echo Default case  break;}

5.3. while 和 do while

一個規范的 while 語句應該如下所示,注意其「括號」、「空格」以及「花括號」的位置。

 ?phpwhile ($expr) { // structure body}

標準的 do while 語句如下所示,同樣的,注意其「括號」、「空格」以及「花括號」的位置。

 ?php // structure body;} while ($expr);

5.4. for

標準的 for 語句如下所示,注意其「括號」、「空格」以及「花括號」的位置。

 ?phpfor ($i = 0; $i $i++) { // for body}

5.5. foreach

標準的 foreach 語句如下所示,注意其「括號」、「空格」以及「花括號」的位置。

 ?phpforeach ($iterable as $key = $value) { // foreach body}

5.6. try, catch

標準的 try catch 語句如下所示,注意其「括號」、「空格」以及「花括號」的位置。

 ?phptry { // try body} catch (FirstExceptionType $e) { // catch body} catch (OtherExceptionType $e) { // catch body}

6. 閉包

閉包聲明時,關鍵詞 function 后以及關鍵詞 use 的前后都 必須 要有一個空格。

開始花括號 必須 寫在聲明的同一行,結束花括號 必須 緊跟主體結束的下一行。

參數列表和變量列表的左括號后以及右括號前,一定不可 有空格。

參數和變量列表中,逗號前 一定不可 有空格,而逗號后 必須 要有空格。

閉包中有默認值的參數 必須 放到列表的后面。

標準的閉包聲明語句如下所示,注意其「括號」、「空格」以及「花括號」的位置。

 ?php$closureWithArgs = function ($arg1, $arg2) { // body$closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) { // body};

參數列表以及變量列表 可以 分成多行,這樣,包括第一個在內的每個參數或變量都 必須 單獨成行,而列表的右括號與閉包的開始花括號 必須 放在同一行。

以下幾個例子,包含了參數和變量列表被分成多行的多情況。

 ?php$longArgs_noVars = function ( $longArgument, $longerArgument, $muchLongerArgument // body$noArgs_longVars = function () use ( $longVar1, $longerVar2, $muchLongerVar3 // body$longArgs_longVars = function ( $longArgument, $longerArgument, $muchLongerArgument) use ( $longVar1, $longerVar2, $muchLongerVar3 // body$longArgs_shortVars = function ( $longArgument, $longerArgument, $muchLongerArgument) use ($var1) { // body$shortArgs_longVars = function ($arg) use ( $longVar1, $longerVar2, $muchLongerVar3 // body};

注意,閉包被直接用作函數或方法調用的參數時,以上規則仍然適用。

 ?php$foo- bar( $arg1, function ($arg2) use ($var1) { // body $arg3);

【推薦課程:PHP視頻教程】

以上就是PHP的PSR-2編碼風格規范的詳細介紹(代碼)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日日狠狠久久偷偷四色综合免费| 91精品国产777在线观看| 国产日韩精品在线播放| 亚洲人成毛片在线播放| 91视频九色网站| 欧美自拍视频在线| 国产欧美一区二区三区四区| 日本人成精品视频在线| 国产精品女视频| 国产一区二区三区三区在线观看| 91影院在线免费观看视频| 亚洲成人激情在线| 亚洲成人黄色在线| 欧美日韩免费网站| 国产精品91久久久久久| 精品无人区太爽高潮在线播放| 91久久精品日日躁夜夜躁国产| 久久99热精品| 国产亚洲一区二区在线| 国产中文字幕日韩| 国产成人在线播放| 91精品国产99| 国产欧美在线视频| 欧美激情视频网址| 欧美日韩亚洲精品内裤| 国产成人综合亚洲| 亚洲女人被黑人巨大进入al| 亚洲第五色综合网| 国产一区二区三区视频免费| 国产午夜精品一区二区三区| 奇米四色中文综合久久| 日本一欧美一欧美一亚洲视频| 日韩网站免费观看| 日韩av影片在线观看| 日韩视频―中文字幕| 国产情人节一区| 精品日韩视频在线观看| 成人乱人伦精品视频在线观看| 亚洲性av网站| 欧美日韩国产丝袜美女| 九九久久久久久久久激情| 欧美午夜激情视频| 午夜伦理精品一区| 欧美成人久久久| 国产在线视频91| 日韩久久免费视频| 欧美一级淫片播放口| 国产在线视频不卡| 亚洲黄色av女优在线观看| 久久久久久久一区二区| 欧美午夜激情小视频| 久久精品国产69国产精品亚洲| 欧美成人精品一区二区三区| 96国产粉嫩美女| 日韩女优在线播放| 亚洲另类图片色| 91美女福利视频高清| 亚洲情综合五月天| 国产精品久久久久久久av大片| 欧美在线观看视频| 欧美日韩激情视频8区| 国产精品成人aaaaa网站| 久久精品久久久久久| 丝袜亚洲另类欧美重口| 色偷偷偷亚洲综合网另类| 狠狠久久亚洲欧美专区| 韩国三级电影久久久久久| 日本19禁啪啪免费观看www| 久久久久久伊人| 亚洲精品一区二区三区婷婷月| 国产v综合ⅴ日韩v欧美大片| 久久影视电视剧免费网站清宫辞电视| 精品国产网站地址| 国模极品一区二区三区| 亚洲午夜av久久乱码| 欧美精品在线免费| 久久69精品久久久久久久电影好| 国产精品视频在线播放| 欧美激情视频在线免费观看 欧美视频免费一| 国产91色在线播放| 中文字幕视频在线免费欧美日韩综合在线看| 国产精彩精品视频| 亚洲资源在线看| 欧美专区国产专区| 欧美日韩第一视频| 97免费视频在线| 亚洲尤物视频网| 亚洲综合大片69999| 亚洲a级在线播放观看| 在线观看日韩欧美| 久久久久久久久综合| 国产va免费精品高清在线| 日韩国产激情在线| 欧美性xxxx| 亚洲美女av电影| 亚洲精品久久久久久久久| 98午夜经典影视| 在线亚洲午夜片av大片| 成人欧美一区二区三区在线湿哒哒| 国产一区深夜福利| 久久久久久久国产| 欧美日韩亚洲一区二区三区| 国产精品国产自产拍高清av水多| 成人h视频在线观看播放| 欧美日韩国产区| 欧美wwwxxxx| 久久影院在线观看| 亚洲高清福利视频| 精品一区二区亚洲| 成人激情视频免费在线| 欧美激情视频在线| 黄色一区二区三区| 亚洲综合在线中文字幕| 国产综合视频在线观看| 色悠悠久久久久| 欧美在线观看一区二区三区| 精品久久久久久久大神国产| 日韩中文字幕不卡视频| 尤物99国产成人精品视频| 亚洲第一精品自拍| 国模叶桐国产精品一区| 日韩人在线观看| 91久久久在线| 欧美做受高潮电影o| 亚洲电影免费在线观看| 亚洲欧美国产日韩中文字幕| 国产欧美日韩中文字幕在线| 日韩电影中文字幕av| 欧美在线中文字幕| 免费91在线视频| 欧美大片第1页| 国产91九色视频| 伊人久久五月天| 亚洲人成亚洲人成在线观看| 亚洲第一偷拍网| 日本不卡免费高清视频| 国产精品精品视频| 欧美在线亚洲一区| 欧美极品少妇xxxxⅹ裸体艺术| 91精品国产高清久久久久久| 中文字幕一精品亚洲无线一区| 国产精品丝袜久久久久久不卡| 国产精品96久久久久久| 中文欧美在线视频| 国产一区二区三区精品久久久| 亚洲一区二区在线| 日本精品久久久| 精品国产91久久久久久| 欧美日韩成人在线播放| 久久精品色欧美aⅴ一区二区| 久久久久中文字幕| 亚洲精品一区av在线播放| 国产精品久久国产精品99gif| 91精品国产自产在线观看永久| 亚洲最大中文字幕| 亚洲久久久久久久久久久| 不卡毛片在线看| 国产69久久精品成人| 国产一区二区色| 国产成一区二区| 日韩精品在线免费观看| 亚洲a∨日韩av高清在线观看| 欧美小视频在线| 亚洲激情在线观看视频免费|