Что такое стрелочная функция в PHP?

«Что такое стрелочная функция в PHP?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Стрелочная функция — это краткий синтаксис для написания анонимных функций, представленный в 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

Ключевые особенности:

  1. Автоматическое захватывание переменных по значению: Все переменные из родительской области видимости (например, $multiplier) доступны автоматически. Не требуется конструкция use.
  2. Неявный возврат: Выражение, указанное после =>, автоматически возвращается. Ключевое слово return использовать нельзя.
  3. Всегда однострочные: Стрелочные функции предназначены для простых операций. Они не могут содержать блоков кода {} или многострочной логики.

Типичное использование: Идеально подходит для коротких операций в функциях вроде 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]