Callback-funktioner i PHP
En callback är en funktion, som skickas som en parameter till en annan funktion.
Låt oss titta på ett exempel. Antag att vi har en funktion som tar ett nummer som sin första parameter, och en callback som sin andra parameter:
<?php
function func($num, $calb)
{
}
?>
Låt oss göra så att inuti funktionen vår callback anropas med det skickade numret:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Låt oss nu se vilka alternativ som finns för att skicka en callback till vår funktion.
Alternativ 1
Vår callback kan vara en vanlig funktion:
<?php
function calb($num) {
return $num ** 2;
}
?>
I det här fallet skickar vi namnet på vår funktion som callback:
<?php
func(3, 'calb');
?>
Inuti funktionen func kommer vår
callback att anropas med dess namn.
Alternativ 2
Vår callback kan vara en anonym funktion, som lagras i en variabel:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
I det här fallet skickar vi variabeln som innehåller vår funktion som en parameter:
<?php
func(3, $calb);
?>
Alternativ 3
Man kan skicka den anonyma funktionen direct som en parameter:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Alternativ 4
Man kan förenkla koden genom att använda en pilfunktion:
<?php
func(3, fn($num) => $num ** 2);
?>
Praktiska uppgifter
Given en funktion som tar en array och en callback som parameter, och som applicerar callbacken på varje element i arrayen:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Anropa denna funktion genom att skicka en array med nummer och en callback som parameter, som kvadrerar det skickade numret.