В программировании важна не только функциональность, но и удобочитаемость кода. Разработчики стремятся писать более лаконичные и понятные выражения, особенно в тех случаях, когда необходимо передать простую логику. С версии PHP 7.4 в язык были добавлены стрелочные функции — синтаксический сахар, позволяющий создавать компактные однострочные анонимные функции.
В этом уроке мы познакомимся с особенностями стрелочных функций, узнаем, как они отличаются от обычных анонимных функций, и рассмотрим практические примеры использования
Что такое стрелочные функции?
Стрелочные функции (или arrow functions) — это короткая форма записи анонимных функций, которая была введена в PHP 7.4. Синтаксис стрелочной функции схож с аналогичной конструкцией в JavaScript и выглядит следующим образом:
fn(аргументы) => выражение;
Пример:
$square = fn($x) => $x * $x;
echo $square(4); // Вывод: 16
Такая запись особенно полезна, когда функция выполняет простое выражение и не требует блока фигурных скобок {} и ключевого слова return.
Сравнение со стандартными анонимными функциями
Рассмотрим два варианта записи одной и той же логики:
Обычная анонимная функция:
$square = function($x) {
return $x * $x;
};
Стрелочная функция:
$square = fn($x) => $x * $x;
Как видно, стрелочная форма более компактна и лучше читается, особенно в тех случаях, когда функция передаётся как аргумент другой функции.
Особенности стрелочных функций
- Только одно выражение
Стрелочная функция может содержать только одно выражение. Это выражение автоматически возвращается — ключевое слово return писать не нужно.
Пример:
$sum = fn($a, $b) => $a + $b;
Нельзя использовать несколько выражений или операторов:
// Это вызовет ошибку
$example = fn($x) => {
$y = $x + 1;
return $y;
};
- Автоматический доступ к внешним переменным
Стрелочные функции автоматически замыкают переменные из внешнего контекста (аналогично use в обычных анонимных функциях), но делают это по значению.
Пример:
$prefix = "Привет, ";
$greet = fn($name) => $prefix . $name;
echo $greet("Алексей"); // Вывод: Привет, Алексей
Это удобно, так как нет необходимости явно указывать use.
Важно: переменные захватываются по значению, а не по ссылке. То есть изменения переменных внутри стрелочной функции не влияют на их значения снаружи.
Использование в функциях обратного вызова
Стрелочные функции особенно хорошо смотрятся в функциях обратного вызова, таких как array_map(), array_filter(), usort() и других.
Пример с array_map():
$numbers = [1, 2, 3, 4, 5];
$squares = array_map(fn($n) => $n * $n, $numbers);
print_r($squares);
// Вывод: Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
Пример с usort():
$users = [
['name' => 'Анна', 'age' => 30],
['name' => 'Иван', 'age' => 25],
];
usort($users, fn($a, $b) => $a['age'] <=> $b['age']);
print_r($users);
// Сортировка по возрасту
Стрелочные функции — это современный инструмент в языке PHP, позволяющий писать лаконичный и выразительный код. Они особенно полезны в случае однострочных операций, которые используются в функциях обратного вызова. При этом важно помнить об их ограничении: возможность описывать только одно выражение.
Знание и использование стрелочных функций делает код более чистым, современным и приближает стиль написания к лучшим практикам, принятым в современном программировании. Рекомендуется применять их там, где это действительно упрощает код, не ухудшая его читаемость.
0 Комментарий(я)
Зарегистрируйтесь чтобы оставить комментарий