PHP 闭包表达式详解
闭包简介
闭包是一种匿名函数,它可以访问创建它的函数作用域中的变量。这种特殊的特性使其在 PHP 中非常有用,因为它允许将功能封装到一个可以作为变量传递的独立单元中。
闭包语法
创建闭包的语法如下:
$closure = function ($arg1, $arg2, ..., $argN) { // 闭包体 };
$closure
:闭包变量的名称。function
:标识闭包开始的关键字。$arg1
, $arg2
, ..., $argN
:闭包的参数(如果有)。闭包体
:闭包执行的代码块。实战案例:传递闭包作为回调函数
闭包经常用作回调函数,即在函数调用完成后执行的其他函数。例如,array_filter()
函数可以接受一个闭包作为回调函数,该闭包将决定是否保留数组中的每个元素:
$numbers = [1, 2, 3, 4, 5, 6, 7]; $filteredNumbers = array_filter($numbers, function($number) { return $number % 2 === 0; }); // [2, 4, 6]
在这种情况下,闭包以匿名函数的形式传递给 array_filter()
,接收一个数字参数并返回 true
(表示应该保留该数字)或 false
(表示应该从数组中删除该数字)。
闭包变量的作用域
闭包可以访问创建它们的函数作用域中的变量。这意味着闭包可以在创建它们的函数中对变量进行读写:
function counter() { $count = 0; return function() use ($count) { $count++; return $count; }; } $increment = counter(); echo $increment(); // 1 echo $increment(); // 2
在上面的例子中,闭包 $increment
访问并递增 $count
变量,即使它是在函数 counter()
之外调用的。