Callback-funktioner i PHP
En callback er en funktion, som overføres som en parameter til en anden funktion.
Lad os se på et eksempel. Antag, at vi har en funktion, som tager et tal som første parameter, og en callback som anden parameter:
<?php
function func($num, $calb)
{
}
?>
Lad os gøre sådan, at inde i funktionen bliver vores callback kaldt med det overførte tal:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Lad os nu se, hvilke muligheder der er for at overføre en callback til vores funktion.
Mulighed 1
Vores callback kan være en almindelig funktion:
<?php
function calb($num) {
return $num ** 2;
}
?>
I dette tilfælde overfører vi navnet på vores funktion som callback:
<?php
func(3, 'calb');
?>
Inde i funktionen func vil vores
callback blive kaldt på navn.
Mulighed 2
Vores callback kan være en anonym funktion, gemt i en variabel:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
I dette tilfælde overfører vi variablen med vores funktion som parameter:
<?php
func(3, $calb);
?>
Mulighed 3
Man kan overføre den anonyme funktion directe som parameter:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Mulighed 4
Man kan forkorte koden ved at bruge pilefunktion:
<?php
func(3, fn($num) => $num ** 2);
?>
Praktiske opgaver
Der gives en funktion, som parameter tager et array og en callback, der vil blive anvendt på hvert element i arrayet:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Kald denne funktion, og overfør som parameter et array med tal og en callback, der opløfter det overførte tal i anden potens.