Слава Україні!

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

Что нового в PHP 7.4. Обзор стрелочных функций в PHP
22-го березня 2020, 11:52

Стрелочные функции (arrow function) позволяют упростить запись анонимных функций, которые возвращают некоторое значение. И при этом стрелочные функции автоматически имеют доступ к переменным из внешней области видимости.

Стрелочные функции также называют короткими замыканиями (short closures)

Итак, вкратце

  • Доступны с PHP 7.4
  • Начинаются с ключевого слова fn
  • Могут иметь только одно выражение, также являющееся возвращаемым значением
  • Имеют доступ к переменным из внешней области видимости

Стрелочная функция определяется с помощью оператора fn. После оператора fn в скобках идет список параметров. Затем указывается оператор =>. А после него располагаются действия функции, которые возвращают некоторый результат.


$a = 8;
$b = 10;

$closure = fn($c) => $a + $b + $c;

$result = $closure(22); // 40
 

В данном случае определение стрелочной функции фактически будет аналогично:


$closure = function($c) use($a, $b)
{
    return $a + $b + $c;
};
 

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

Также стрелочные функции могут применяться в качестве параметров функции


function sum($numbers, $condition)
{
    $result = 0;
    foreach($numbers as $number){
        if($condition($number))
        {
            $result += $number;
        }
    }
    return $result;
}

$myNumbers = [-2, -1, 0, 1, 2, 3, 4, 5];

$positiveSum = sum($myNumbers, fn($n)=>$n > 0);
$evenSum = sum($myNumbers, fn($n) => $n % 2 === 0);
echo "Сумма положительных чисел: $positiveSum <br /> Сумма четных чисел: $evenSum";
 

Важлива інформація

Міністерство оборони
України
з 24.02 по 07.02
втрати противника
орієнтовно склали:
846650 ( +1340 ) особового складу
9975 ( +10 ) танків
20755 ( +18 ) бойових бронемашин
22785 ( +32 ) артилерійських систем
1271 ( +0 ) РСЗВ
1056 ( +1 ) засоби ППО
369 ( +0 ) літаків
331 ( +0 ) гелікоптерів
36307 ( +96 ) автомобільної техніки
28 ( +0 ) кораблі / катери
3054 ( +0 ) крилаті ракети
24301 ( +116 ) БПЛА
3738 ( +1 ) спец. техніки
4 ( +0 ) установок ОТРК/ТРК
1 ( +0 ) підводні човни