Callback-funktiot PHP:ssä
Callback on funktio, joka välitetään parametrina toiseen funktioon.
Katsotaanpa esimerkkiä. Oletetaan, että meillä on funktio, joka ottaa ensimmäisenä parametrina numeron, ja toisena parametrina - callbackin:
<?php
function func($num, $calb)
{
}
?>
Tehdään niin, että funktion sisällä meidän callbackia kutsutaan annetulle numerolle:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Katsotaan nyt, mitä vaihtoehtoja callbackin välittämiseksi funktioomme on.
Vaihtoehto 1
Callbackimme voi olla tavallinen funktio:
<?php
function calb($num) {
return $num ** 2;
}
?>
Tässä tapauksessa callbackina välitämme funktiomme nimen:
<?php
func(3, 'calb');
?>
Funktion func sisällä meidän
callbackia kutsutaan nimellä.
Vaihtoehto 2
Callbackimme voi olla nimetön funktio, kirjoitettu muuttujaan:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
Tässä tapauksessa parametrina välitämme muuttujan funktiollamme:
<?php
func(3, $calb);
?>
Vaihtoehto 3
Nimetön funktio voidaan välittää välittömästi parametrina:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Vaihtoehto 4
Koodia voidaan lyhentää käyttämällä nuolifunktiota:
<?php
func(3, fn($num) => $num ** 2);
?>
Käytännön tehtävät
Annettu funktio, joka ottaa parametrina taulukon ja callbackin, jota sovelletaan jokaiseen taulukon elementtiin:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Kutsu tätä funktiota välittämällä parametrina taulukko numeroilla ja callback, joka nostaa annetun numeron neliöön.