Функции-коллбэки в PHP
Коллбэком называется функция, которая передается параметром в другую функцию.
Давайте посмотрим на примере. Пусть у нас есть функция, которая первым параметром принимает число, а вторым параметром - коллбэк:
<?php
function func($num, $calb)
{
}
?>
Сделаем так, чтобы внутри функции наш коллбэк был вызван для переданного числа:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Давайте теперь посмотрим, какие есть варианты передачи коллбэка в нашу функцию.
Вариант 1
Наш коллбэк может быть обычной функцией:
<?php
function calb($num) {
return $num ** 2;
}
?>
В этом случае в качестве коллбэка мы передадим имя нашей функции:
<?php
func(3, 'calb');
?>
Внутри функции func наш
коллбэк будет вызван по имени.
Вариант 2
Наш коллбэк может быть анонимной функцией, записанной в переменную:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
В этом случае мы параметром передаем переменную с нашей функцией:
<?php
func(3, $calb);
?>
Вариант 3
Можно передать анонимную функцию сразу параметром:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Вариант 4
Можно сократить код, используя стрелочную функцию:
<?php
func(3, fn($num) => $num ** 2);
?>
Практические задачи
Дана функция, параметром принимающая массив и коллбэк, который применится к каждому элементу массива:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Вызовите эту функцию, в качестве параметра передав массив с числами и коллбэк, возводящий переданное число в квадрат.