PHP да функция-коллбэклар
Коллбэк деб параметр сифатида бошка функцияга ўтказилувчи функцияга айтилади.
Келгила, мисолда кўрамиз. Фарз қилайлик, бизда биринчи параметр сифатида сонни, иккинчи параметр сифатида эса коллбэкни қабул қилувчи функция мавжуд:
<?php
function func($num, $calb)
{
}
?>
Функция ичида бизнинг коллбэкимиз ўтказилган сон учун чақирилсин:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Энди бизнинг функцияга коллбэкни ўтказишнинг қандай имкониятлари борлигини кўрамиз.
1-усул
Бизнинг коллбэк оддий функция бўлиши мумкин:
<?php
function calb($num) {
return $num ** 2;
}
?>
Бунда коллбэк сифатида биз функциянимиз номини ўтказамиз:
<?php
func(3, 'calb');
?>
func функцияси ичида бизнинг коллбэкимиз
номи орқали чақирилади.
2-усул
Бизнинг коллбэк ўзгарувчига ёзилган номсиз функция бўлиши мумкин:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
Бунда биз параметр сифатида функция билан ўзгарувчини ўтказамиз:
<?php
func(3, $calb);
?>
3-усул
Номсиз функцияни darhol параметр сифатида ўтказиш мумкин:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
4-усул
Ўқ функциясидан фойдаланиб, кодни қисқартириш мумкин:
<?php
func(3, fn($num) => $num ** 2);
?>
Амалий машқлар
Массив ва har bir массив элементига қўлланиладиган коллбэкни параметр сифатида қабул қилувчи функция берилган:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Сонлар билан массив ва ўтказилган сонни квадратга кўтарувчи коллбэкни параметр сифатида ўтказиб, бу функцияни чақиринг.