{
// 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_l