Funksionet Callback në PHP
Callback quhet një funksion, që i transmetohet si parametër një funksioni tjetër.
Le të shohim një shembull. Le të themi se kemi një funksion që si parametër të parë pranon një numër, kurse si parametër të dytë - një callback:
<?php
function func($num, $calb)
{
}
?>
Le ta bëjmë që brenda funksionit callback-i ynë të thirret për numrin e transmetuar:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Le të shohim tani se cilat janë variantet e transmetimit të callback-ut në funksionin tonë.
Varianti 1
Callback-i ynë mund të jetë një funksion i zakonshëm:
<?php
function calb($num) {
return $num ** 2;
}
?>
Në këtë rast si callback do të transmetojmë emrin e funksionit tonë:
<?php
func(3, 'calb');
?>
Brenda funksionit func
callback-i ynë do të thirret me emër.
Varianti 2
Callback-i ynë mund të jetë një funksion anonim, i regjistruar në një variabël:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
Në këtë rast ne si parametër e transmetojmë variablin me funksionin tonë:
<?php
func(3, $calb);
?>
Varianti 3
Mund të transmetohet një funksion anonim menjëherë si parametër:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Varianti 4
Mund të shkurtohet kodi, duke përdorur funksionin me shigjetë:
<?php
func(3, fn($num) => $num ** 2);
?>
Detyra praktike
Është dhënë një funksion që si parametër pranon nje array dhe një callback, i cili do të aplikohet për çdo element të array-it:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Thirreni këtë funksion, duke i transmetuar si parametra një array me numra dhe një callback që e ngre numrin e transmetuar në katror.