Callback-funktsioonid PHP-s
Callback on funktsioon, mis edastatakse parameetrina teise funktsiooni.
Vaatame näidet. Oletame, et meil on funktsioon, mis võtab esimese parameetrina arvu ja teise parameetrina - callbacki:
<?php
function func($num, $calb)
{
}
?>
Teeme nii, et funktsiooni sees kutsutaks meie callback etteantud arvu jaoks välja:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Vaatame nüüd, millised võimalused callbacki edastamiseks meie funktsiooni on.
Variant 1
Meie callback võib olla tavaline funktsioon:
<?php
function calb($num) {
return $num ** 2;
}
?>
Sel juhul edastame callbackina meie funktsiooni nime:
<?php
func(3, 'calb');
?>
Funktsiooni func sees
kutsutakse meie callback välja nime järgi.
Variant 2
Meie callback võib olla anonüümne funktsioon, kirjutatud muutujasse:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
Sel juhul edastame parameetrina muutuja meie funktsiooniga:
<?php
func(3, $calb);
?>
Variant 3
Võib edastada anonüümse funktsiooni kohe parameetrina:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Variant 4
Saab lühendada koodi, kasutades noolfunktsiooni:
<?php
func(3, fn($num) => $num ** 2);
?>
Praktilised ülesanded
Antud funktsioon, mis võtab parameetrina massiivi ja callbacki, mida rakendatakse iga massiivi elemendi jaoks:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Kutsu see funktsioon välja, edastades parameetritena numbritega massiivi ja callbacki, mis tõstab etteantud numbri ruutu.