Funkcije-povratni pozivi u PHP-u
Povratni poziv (callback) se naziva funkcija, koja se prosleđuje kao parametar u drugu funkciju.
Hajde da pogledamo na primeru. Neka imamo funkciju koja prvi parametar prima broj, a drugi parametar - povratni poziv:
<?php
function func($num, $calb)
{
}
?>
Učinimo da unutar funkcije naš povratni poziv bude pozvan za prosleđeni broj:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Hajde sada da pogledamo, koje ima varijanti prosleđivanja povratnog poziva u našu funkciju.
Varijanta 1
Naš povratni poziv može biti obična funkcija:
<?php
function calb($num) {
return $num ** 2;
}
?>
U ovom slučaju kao povratni poziv prosledićemo ime naše funkcije:
<?php
func(3, 'calb');
?>
Unutar funkcije func naš
povratni poziv će biti pozvan po imenu.
Varijanta 2
Naš povratni poziv može biti anonimna funkcija, upisana u promenljivu:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
U ovom slučaju parametrom prosleđujemo promenljivu sa našom funkcijom:
<?php
func(3, $calb);
?>
Varijanta 3
Može se proslediti anonimna funkcija odmah parametrom:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Varijanta 4
Može se skratiti kod, koristeći streličastu funkciju:
<?php
func(3, fn($num) => $num ** 2);
?>
Praktični zadaci
Data je funkcija, koja parametrima prima niz i povratni poziv, koji će se primeniti na svaki element niza:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Pozovite ovu funkciju, kao parametar prosleđujući niz sa brojevima i povratni poziv, koji podiže prosleđeni broj na kvadrat.