Funkcje zwrotne (callback) w PHP
Funkcją zwrotną (callback) nazywa się funkcja, która jest przekazywana jako parametr do innej funkcji.
Spójrzmy na przykład. Załóżmy, że mamy funkcję, która jako pierwszy parametr przyjmuje liczbę, a jako drugi parametr - funkcję zwrotną (callback):
<?php
function func($num, $calb)
{
}
?>
Zróbmy tak, aby wewnątrz funkcji nasza funkcja zwrotna została wywołana dla przekazanej liczby:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Zobaczmy teraz, jakie są warianty przekazania funkcji zwrotnej do naszej funkcji.
Wariant 1
Nasza funkcja zwrotna może być zwykłą funkcją:
<?php
function calb($num) {
return $num ** 2;
}
?>
W tym przypadku jako funkcję zwrotną przekażemy nazwę naszej funkcji:
<?php
func(3, 'calb');
?>
Wewnątrz funkcji func nasza
funkcja zwrotna zostanie wywołana po nazwie.
Wariant 2
Nasza funkcja zwrotna może być funkcją anonimową, zapisaną w zmiennej:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
W tym przypadku jako parametr przekazujemy zmienną z naszą funkcją:
<?php
func(3, $calb);
?>
Wariant 3
Można przekazać funkcję anonimową od razu jako parametr:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Wariant 4
Można skrócić kod, używając funkcji strzałkowej:
<?php
func(3, fn($num) => $num ** 2);
?>
Zadania praktyczne
Dana jest funkcja, która jako parametr przyjmuje tablicę i funkcję zwrotną (callback), która zostanie zastosowana do każdego elementu tablicy:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Wywołaj tę funkcję, przekazując jako parametr tablicę z liczbami oraz funkcję zwrotną, która podnosi przekazaną liczbę do kwadratu.