PHP规范PSR2(编码指南)介绍(三)

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
);

7 结论

本指南有意省略了许多风格和实践元素。这些包括但不限于:

  • 全局变量和全局常量
  • 声明函数
  • 声明操作符和赋值
  • 行间对齐
  • 注释和文档块
  • 类名前缀和后缀
  • 最佳实践

未来的建议可能会修订和扩展本指南,以解决风格和实践中的那些或其他元素。

猜你喜欢

转载自blog.csdn.net/u013702678/article/details/83450853