Функции за обратно извикване (callback) в PHP
Функция за обратно извикване (callback) се нарича функция, която се предава като параметър на друга функция.
Нека разгледаме пример. Да предположим, че имаме функция, която приема число като първи параметър, а вторият параметър е функция за обратно извикване:
<?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;
}
?>
Извикайте тази функция, като подадете като параметър масив с числа и функция за обратно извикване, която повдига подаденото число на квадрат.