1. 程式人生 > >PHP規範PSR2(編碼指南)介紹(二)

PHP規範PSR2(編碼指南)介紹(二)

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 = []
    ) {
        // method body
    }
}

4.5 抽象,最終和靜態

如果存在,抽象和最終宣告必須在可見性宣告之前。

如果存在,靜態宣告必須在可見性宣告之後。

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

5.2 switch,case

開關結構如下所示。請注意括號,空格和大括號的位置。 case語句必須從switch縮排一次,break關鍵字(或其他終止關鍵字)必須縮排到與case主體相同的級別。必須有一個評論,例如//在非空案例主體中故意進行跌倒時不會中斷。

<?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
}