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
Կարելի է անանուն ֆունկցիան անմիջապես փոխանցել որպես պարամետր:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Տարբերակ 4
Կարելի է կրճատել կոդը՝ օգտագործելով սլաքային ֆունկցիա:
<?php
func(3, fn($num) => $num ** 2);
?>
Գործնական առաջադրանքներ
Տրված է ֆունկցիա, որն ընդունում է զանգված և կոլբեք, որն կկիրառվի զանգվածի յուրաքանչյուր տարրի նկատմամբ:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Կանչեք այս ֆունկցիան՝ որպես պարամետր փոխանցելով թվերով զանգված և կոլբեք, որը բարձրացնում է փոխանցված թիվը քառակուսի: