PHP Closure(闭包)是一种特殊的函数,它能够捕获其定义时的上下文环境中的变量,即使在其定义的上下文环境已经不存在了,闭包仍然可以访问这些变量。闭包在 PHP 中有很多用途,以下是一些常见的用途:
$counter = 0;
$increment = function() use (&$counter) {
$counter++;
};
$increment();
$increment();
echo $counter; // 输出 2
function applyFilter($value, callable $filter) {
return $filter($value);
}
$double = function($x) {
return $x * 2;
};
$triple = function($x) {
return $x * 3;
};
echo applyFilter(5, $double); // 输出 10
echo applyFilter(5, $triple); // 输出 15
$numbers = [1, 2, 3, 4, 5];
array_walk($numbers, function(&$number) {
$number *= 2;
});
print_r($numbers); // 输出 Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
$factorial = function($n) use (&$cache) {
if (!isset($cache[$n])) {
$cache[$n] = $n * $factorial($n - 1);
}
return $cache[$n];
};
echo $factorial(5); // 输出 120
总之,PHP Closure 是一种非常强大的特性,它可以帮助你编写更简洁、灵活和可维护的代码。