Урок 11: Стрелочные функции в PHP

В программировании важна не только функциональность, но и удобочитаемость кода. Разработчики стремятся писать более лаконичные и понятные выражения, особенно в тех случаях, когда необходимо передать простую логику. С версии 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;

Как видно, стрелочная форма более компактна и лучше читается, особенно в тех случаях, когда функция передаётся как аргумент другой функции.

 

Особенности стрелочных функций

  1. Только одно выражение

Стрелочная функция может содержать только одно выражение. Это выражение автоматически возвращается — ключевое слово return писать не нужно.

Пример:

$sum = fn($a, $b) => $a + $b;

Нельзя использовать несколько выражений или операторов:

// Это вызовет ошибку

$example = fn($x) => {

    $y = $x + 1;

    return $y;

};

 

  1. Автоматический доступ к внешним переменным

Стрелочные функции автоматически замыкают переменные из внешнего контекста (аналогично 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, позволяющий писать лаконичный и выразительный код. Они особенно полезны в случае однострочных операций, которые используются в функциях обратного вызова. При этом важно помнить об их ограничении: возможность описывать только одно выражение.

Знание и использование стрелочных функций делает код более чистым, современным и приближает стиль написания к лучшим практикам, принятым в современном программировании. Рекомендуется применять их там, где это действительно упрощает код, не ухудшая его читаемость.

Лого

Spartacus_85 [Admin]

Администратор сайта — это специалист, который отвечает за техническую поддержку и бесперебойную работу веб-ресурса.



0 Комментарий(я)

Зарегистрируйтесь чтобы оставить комментарий