## 閉包
閉包聲明時,關鍵詞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
);
~~~
- 1. 概覽
- 1.1. 例子
- 2. 通則
- 2.1 基本編碼準則
- 2.2 文件
- 2.3. 行
- 2.4. 縮進
- 2.5. 關鍵字 以及 True/False/Null
- 3. namespace 以及 use 聲明
- 4. 類、屬性和方法
- 4.1. 擴展與繼承
- 4.2. 屬性
- 4.3. 方法
- 4.4. 方法的參數
- 4.5.abstract、final、 以及static
- 4.6. 方法及函數調用
- 5. 控制結構
- 5.1.if、elseif和else
- 5.2.switch和case
- 5.3.while和do while
- 5.4.for
- 5.5.foreach
- 5.6.try,catch
- 6. 閉包
- 7. 總結