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

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 結論

本指南有意省略了許多風格和實踐元素。這些包括但不限於:

  • 全域性變數和全域性常量
  • 宣告函式
  • 宣告操作符和賦值
  • 行間對齊
  • 註釋和文件塊
  • 類名字首和字尾
  • 最佳實踐

未來的建議可能會修訂和擴充套件本指南,以解決風格和實踐中的那些或其他元素。