Callback-funksjoner i PHP
En callback er en funksjon som overføres som en parameter til en annen funksjon.
La oss se på et eksempel. Anta at vi har en funksjon som tar imot et tall som første parameter, og en callback som andre parameter:
<?php
function func($num, $calb)
{
}
?>
La oss gjøre slik at inne i funksjonen blir vår callback kalt for det overførte tallet:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
La oss nå se på hvilke alternativer som finnes for å overføre en callback til funksjonen vår.
Alternativ 1
Vår callback kan være en vanlig funksjon:
<?php
function calb($num) {
return $num ** 2;
}
?>
I dette tilfellet overfører vi navnet på funksjonen vår som callback:
<?php
func(3, 'calb');
?>
Inne i funksjonen func vil
callback-en vår bli kalt på ved navn.
Alternativ 2
Vår callback kan være en anonym funksjon som er lagret i en variabel:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
I dette tilfellet overfører vi variabelen med funksjonen vår som en parameter:
<?php
func(3, $calb);
?>
Alternativ 3
Du kan overføre en anonym funksjon umiddelbart som en parameter:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Alternativ 4
Du kan forkorte koden ved å bruke pilfunksjoner:
<?php
func(3, fn($num) => $num ** 2);
?>
Praktiske oppgaver
Gitt en funksjon som tar imot en array og en callback som parameter, som vil bli brukt på hvert element i arrayen:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Kall denne funksjonen, og overfør en array med tall og en callback som parameter, som opphøyer det overførte tallet i andre potens.