Vitendo-vipokezi (Callbacks) katika PHP
Kitendo-kipokezi ni kitendakazi kinachopitishwa kama kigezo kingine katika kitendakazi.
Hebu tuangalie kwa mfano. Tuchukulie tuna kitendakazi ambacho kinakubali nambari kama kigezo cha kwanza, na kitendo-kipokezi kama kigezo cha pili:
<?php
function func($num, $calb)
{
}
?>
Tufanye ili ndani ya kitendakazi kitendo-chetu-kipokezi kiitwe kwa nambari iliyopitishwa:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Hebu sasa tuone, ni njia gani za kupitisha kitendo-kipokezi katika kitendakazi chetu.
Njia 1
Kitendo-chetu-kipokezi kinaweza kuwa kitendakazi cha kawaida:
<?php
function calb($num) {
return $num ** 2;
}
?>
Katika hali hii kama kitendo-kipokezi tutapitisha jina la kitendakazi chetu:
<?php
func(3, 'calb');
?>
Ndani ya kitendakazi func
kitendo-chetu-kipokezi kitaitwa kwa jina.
Njia 2
Kitendo-chetu-kipokezi kinaweza kuwa kitendakazi bila jina, kiliandikwa kwenye kigeuzi:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
Katika hali hii tunapitisha kigeuzi na kitendakazi chetu kama kigezo:
<?php
func(3, $calb);
?>
Njia 3
Inawezekana kupitisha kitendakazi bila jina moja kwa moja kama kigezo:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Njia 4
Inawezekana kufupisha msimbo, kwa kutumia kitendakazi-kishale:
<?php
func(3, fn($num) => $num ** 2);
?>
Kazi za Vitendo
Kuna kitendakazi, kinachokubali orodha kama kigezo na kitendo-kipokezi, ambacho kitatumika kwa kila kipengele cha orodha:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Ita kitendakazi hiki, upitishae kama kigezo orodha yenye nambari na kitendo-kipokezi, kinachoinua nambari iliyopitishwa mraba.