Ответ
Стрелочная функция — это краткий синтаксис для написания анонимных функций, представленный в PHP 7.4. Ключевое отличие от обычных анонимных функций — автоматическое захвавание переменных из родительской области видимости и неявный возврат результата выражения.
Синтаксис и пример:
// Обычная анонимная функция (до PHP 7.4)
$multiplier = 2;
$oldFunc = function($x) use ($multiplier) {
return $x * $multiplier;
};
// Стрелочная функция (PHP 7.4+)
$multiplier = 2;
$arrowFunc = fn($x) => $x * $multiplier;
echo $arrowFunc(5); // Выведет: 10
Ключевые особенности:
- Автоматическое захватывание переменных по значению: Все переменные из родительской области видимости (например,
$multiplier) доступны автоматически. Не требуется конструкцияuse. - Неявный возврат: Выражение, указанное после
=>, автоматически возвращается. Ключевое словоreturnиспользовать нельзя. - Всегда однострочные: Стрелочные функции предназначены для простых операций. Они не могут содержать блоков кода
{}или многострочной логики.
Типичное использование: Идеально подходит для коротких операций в функциях вроде array_map, array_filter или usort, где логика умещается в одно выражение.
$users = [['id' => 1, 'active' => true], ['id' => 2, 'active' => false]];
$activeUserIds = array_map(fn($user) => $user['id'], array_filter($users, fn($user) => $user['active']));
// $activeUserIds = [1]