🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 闭包 闭包声明时,关键词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 ); ~~~