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
}