91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中PSR-2編碼風格規范是什么

發布時間:2020-10-29 11:37:53 來源:億速云 閱讀:116 作者:小新 欄目:編程語言

PHP中PSR-2編碼風格規范是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

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

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

1、概覽

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

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

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

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

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

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

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

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

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

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

1.1. 例子

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

<?php
namespace 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 聲明語句塊后 必須 要有一個空白行。

例如:

<?php

namespace Vendor\Package;
use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;

4. 類、屬性和方法

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

4.1. 擴展與繼承

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

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

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

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

<?php

namespace 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。

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

<?php
namespace Vendor\Package;
class ClassName
{
 public $foo = null;
}

4.3方法

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

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

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

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

<?php
namespace Vendor\Package;
class ClassName
{
 public function fooBarBaz($arg1, &$arg2, $arg3 = [])
 {
 // method body
 }
}

4.4. 方法的參數

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

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

<?php
namespace Vendor\Package;
class ClassName
{
 public function foo($arg1, &$arg2, $arg3 = [])
 {
 // method body
 }
}

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

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

<?php
namespace Vendor\Package;
class ClassName
{
 public function aVeryLongMethodName(
 ClassTypeHint $arg1,
 &$arg2,
 array $arg3 = []
 ) {
 // 方法的內容
 }
}

4.5. abstract 、 final 、 以及 static

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

<?php
namespace Vendor\Package;
abstract class ClassName
{
 protected static $foo;
 abstract protected function zim();
 final public static function bar()
 {
 // method body
 }
}

4.6. 方法及函數調用

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

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

5. 控制結構

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

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

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

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

5.1. if 、elseif 和 else

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

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

<?php
if ($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 的注釋。

<?php
switch ($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 語句應該如下所示,注意其「括號」、「空格」以及「花括號」的位置。

<?php
while ($expr) {
 // structure body
}

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

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

5.4. for

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

<?php
for ($i = 0; $i < 10; $i++) {
 // for body
}

5.5. foreach

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

<?php
foreach ($iterable as $key => $value) {
 // foreach body
}

5.6. try, catch

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

<?php
try {
 // 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中PSR-2編碼風格規范是什么大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长白| 溆浦县| 龙游县| 新巴尔虎左旗| 额尔古纳市| 天峻县| 高雄县| 外汇| 青冈县| 华宁县| 昌江| 大荔县| 即墨市| 韶山市| 郁南县| 云梦县| 五莲县| 吉隆县| 韶关市| 辽宁省| 马山县| 台前县| 手游| 奉节县| 嫩江县| 乐至县| 锡林浩特市| 石林| 寿阳县| 濉溪县| 延安市| 隆林| 岚皋县| 通渭县| 阿图什市| 洞口县| 祁东县| 城口县| 临颍县| 二连浩特市| 保德县|