Функция высшего порядка принимает функцию как аргумент или возвращает функцию:
// Принимает функцию
$doubled = array_map(fn($x) => $x * 2, [1, 2, 3]); // [2, 4, 6]
$evens = array_filter([1, 2, 3, 4], fn($x) => $x % 2 === 0); // [2, 4]
$sum = array_reduce([1, 2, 3], fn($carry, $x) => $carry + $x, 0); // 6
usort($arr, fn($a, $b) => $a <=> $b);
// Возвращает функцию
function multiplier(int $factor): Closure {
return fn(int $x): int => $x * $factor;
}
$triple = multiplier(3);
echo $triple(5); // 15