Callback funkcie v PHP
Callback je funkcia, ktorá sa odovzdáva ako parameter do inej funkcie.
Pozrime sa na príklad. Predpokladajme, že máme funkciu, ktorá ako prvý parameter prijíma číslo, a ako druhý parameter - callback:
<?php
function func($num, $calb)
{
}
?>
Urobme to tak, aby vo vnútri funkcie bol náš callback zavolaný s odovzdaným číslom:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Pozrime sa teraz, aké možnosti odovzdania callbacku do našej funkcie existujú.
Možnosť 1
Našim callbackom môže byť obyčajná funkcia:
<?php
function calb($num) {
return $num ** 2;
}
?>
V tomto prípade ako callback odovzdáme meno našej funkcie:
<?php
func(3, 'calb');
?>
Vo vnútri funkcie func bude náš
callback zavolaný podľa mena.
Možnosť 2
Našim callbackom môže byť anonymná funkcia, zapísaná do premennej:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
V tomto prípade ako parameter odovzdáme premennú s našou funkciou:
<?php
func(3, $calb);
?>
Možnosť 3
Môžeme odovzdať anonymnú funkciu priamo ako parameter:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Možnosť 4
Môžeme skrátiť kód pomocou arrow funkcie:
<?php
func(3, fn($num) => $num ** 2);
?>
Praktické úlohy
Daná je funkcia, ktorá ako parameter prijíma pole a callback, ktorý sa aplikuje na každý prvok poľa:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Zavolajte túto funkciu, ako parameter odovzdajte pole s číslami a callback, ktorý umocní odovzdané číslo na druhú.