Funcții callback în PHP
Un callback este o funcție care este transmisă ca parametru unei alte funcții.
Să ne uităm la un exemplu. Să presupunem că avem o funcție care primește un număr ca prim parametru, iar al doilea parametru - un callback:
<?php
function func($num, $calb)
{
}
?>
Să facem astfel încât în interiorul funcției callback-ul nostru să fie apelat pentru numărul transmis:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Să vedem acum ce variante de transmitere a callback-ului în funcția noastră există.
Varianta 1
Callback-ul nostru poate fi o funcție obșnuită:
<?php
function calb($num) {
return $num ** 2;
}
?>
În acest caz, ca callback vom transmite numele funcției noastre:
<?php
func(3, 'calb');
?>
În interiorul funcției func
callback-ul nostru va fi apelat după nume.
Varianta 2
Callback-ul nostru poate fi o funcție anonimă, scrisă într-o variabilă:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
În acest caz, transmitem ca parametru variabila cu funcția noastră:
<?php
func(3, $calb);
?>
Varianta 3
Puteți transmite funcția anonimă imediat ca parametru:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Varianta 4
Puteți scurta codul, utilizând o funcție săgeată:
<?php
func(3, fn($num) => $num ** 2);
?>
Probleme practice
Este dată o funcție care primește ca parametru un array și un callback, care se va aplica fiecărui element al array-ului:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Apelați această funcție, transmitând ca parametru un array cu numere și un callback care ridică numărul transmis la pătrat.