Зваротныя функцыі ў 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;
}
?>
Выклічце гэтую функцыю, у якасці параметра перадаўшы масіў з лікамі і зваротную функцыю, якая ўзводзіць перададзены лік у квадрат.