> В чем разница короткого синтаксиса функций fn и замыканий в PHP (PHP)

Уровень: senior · Роль: backend · Язык: PHP · Категория: Технические вопросы

Компании: vanta

Стек: PHP

> Пример ответа

Основное различие между коротким синтаксисом функций fn (стрелочные функции) и замыканиями (анонимными функциями с function) в PHP заключается в области видимости переменных и синтаксисе.

Стрелочные функции (fn) автоматически захватывают переменные из родительской области видимости по значению (by value), и не требуют явного указания use. Они всегда возвращают выражение, и их тело состоит из одного выражения без фигурных скобок. Например:

PHP
$multiplier = 2;
$numbers = [1, 2, 3];
$result = array_map(fn($n) => $n * $multiplier, $numbers); // [2, 4, 6]

Замыкания (анонимные функции) требуют явного указания переменных через use, если нужно получить доступ к внешним переменным. Они могут содержать несколько операторов в теле и поддерживают возврат по ссылке. Пример:

PHP
$multiplier = 2;
$numbers = [1, 2, 3];
$result = array_map(function($n) use ($multiplier) {
return $n * $multiplier;
}, $numbers); // [2, 4, 6]

Ключевые отличия:

  • Область видимости: fn захватывает переменные автоматически, замыкания - только через use.
  • Тело функции: fn - только одно выражение, замыкания - произвольный код.
  • Изменяемость: В fn переменные захватываются по значению и не могут быть изменены внутри; в замыканиях можно передать по ссылке (use (&$var)).
  • Синтаксис: fn($arg) => expr против function($arg) use ($var) { ... }.

Таким образом, fn - это лаконичная альтернатива для простых операций, а замыкания - для более сложной логики с контролем захвата переменных.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью