Функсияҳои callback дар PHP
Callback функсияе номида мешавад, ки ба унвони параметр ба функсияи дигар дода мешавад.
Биёед ба мисол нигарем. Фарз кунем, ки мо функсияе дорем, ки ба унвони параметри аввал адад ва ба унвони параметри дуюм - callback қабул мекунад:
<?php
function func($num, $calb)
{
}
?>
Биёед тавре созем, ки дар дохили функсия callback-и мо барои адади додашуда фарохонда шавад:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Ҳоло биёед бубинем, ки чӣ гуна вариантҳои додани callback ба функсияи мо мавҷуданд.
Варианти 1
Callback-и мо метавонад функсияи оддӣ бошад:
<?php
function calb($num) {
return $num ** 2;
}
?>
Дар ин ҳолат ба унвони callback мо номи функсияи худро медиҳем:
<?php
func(3, 'calb');
?>
Дар дохили функсияи func
callback-и мо бо ном фарохонда мешавад.
Варианти 2
Callback-и мо метавонад функсияи гумном бошад, ки дар тағирёбанда сабт шудааст:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
Дар ин ҳолат мо параметрро тағирёбандаеро, ки функсияи моро дорад, медиҳем:
<?php
func(3, $calb);
?>
Варианти 3
Метавон функсияи гумномро ҳамзамон параметр дод:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Варианти 4
Метавон рамзро бо истифода аз функсияи тирӣ кӯтоҳ кард:
<?php
func(3, fn($num) => $num ** 2);
?>
Масъалаҳои амалӣ
Функсияе дода шудааст, ки параметраш массив ва callback-ро қабул мекунад, ки ба ҳар як элементи массив татбиқ карда мешавад:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Ин функсиеро фарохонед, ба унвони параметр массиве бо ададҳо ва callback-еро дода, ки адади додашударо ба квадрат мебарад.