Callback-funksies in PHP
'n Callback is 'n funksie wat as 'n parameter aan 'n ander funksie oorgedra word.
Kom ons kyk na 'n voorbeeld. Gestel ons het 'n funksie wat as eerste parameter 'n nommer aanvaar, en as tweede parameter - 'n callback:
<?php
function func($num, $calb)
{
}
?>
Laat ons maak dat binne die funksie ons callback vir die oorgedraagde nommer aangeroep word:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Kom ons kyk nou watter opsies daar is om 'n callback aan ons funksie oor te dra.
Opsie 1
Ons callback kan 'n gewone funksie wees:
<?php
function calb($num) {
return $num ** 2;
}
?>
In hierdie geval sal ons die naam van ons funksie as callback oordra:
<?php
func(3, 'calb');
?>
Binne die funksie func sal ons
callback by die naam aangeroep word.
Opsie 2
Ons callback kan 'n anonieme funksie wees, gestoor in 'n veranderlike:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
In hierdie geval dra ons die veranderlike met ons funksie as parameter oor:
<?php
func(3, $calb);
?>
Opsie 3
Jy kan die anonieme funksie direk as parameter oordra:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Opsie 4
Jy kan die kode verkort deur 'n pylfunksie te gebruik:
<?php
func(3, fn($num) => $num ** 2);
?>
Praktiese take
Gegee 'n funksie wat 'n skikking en 'n callback as parameter aanvaar, wat op elke element van die skikking toegepas sal word:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Roep hierdie funksie aan, en dra as parameter 'n skikking met nommers oor en 'n callback wat die oorgedraagde nommer kwadreer.