PHP-de käýiriji funksiýalar
Käýiriji funksiýa, başga bir funksiýa parametr hökmünde berilýän funksiýa bolup durýar.
Geliň mysal üsti bilen seredeliň. Bizde bir funksiýa bolsun, ol birinji parametr hökmünde san, ikinji parametr hökmünde bolsa käýiriji funksiýa kabul etsin:
<?php
function func($num, $calb)
{
}
?>
Funksiýanyň içinde käýiriji funksiýanyň berlen san üçin çagyrylmagyny üpjün edeliň:
<?php
function func($num, $calb)
{
echo $calb($num);
}
?>
Indi bizde käýiriji funksiýany funksiýamyza bermegiň nähili wariantlary bar bolup bilýändigine seredeliň.
Wariant 1
Bizim käýiriji funksiýamyz adaty funksiýa bolup biler:
<?php
function calb($num) {
return $num ** 2;
}
?>
Bu ýagdaýda käýiriji hökmünde biz öz funksiýamyzyň adyny bereris:
<?php
func(3, 'calb');
?>
func funksiýasynyň içinde bizim
käýiriji funksiýamyz ady boýunça çagyrylar.
Wariant 2
Bizim käýiriji funksiýamyz anonim funksiýa, üýtgeýjide ýazylan bolup biler:
<?php
$calb = function($num) {
return $num ** 2;
};
?>
Bu ýagda biz parametr hökmünde funksiýa bilen üýtgeýjimizi berýäris:
<?php
func(3, $calb);
?>
Wariant 3
Anonim funksiýany derrew parametr hökmünde bermek mümkindir:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Wariant 4
Ok funksiýasyny ulanyp, kody gysgaltmak mümkindir:
<?php
func(3, fn($num) => $num ** 2);
?>
Amaly wezipeler
Massiw we her bir massiw elementine ulanylar käýiriji funksiýany parametr hökmünde kabul edýän funksiýa berlen:
<?php
function func($arr, $calb)
{
$res = [];
foreach ($arr as $elem) {
$res[] = $calb($elem);
}
return $res;
}
?>
Bu funksiýany, parametr hökmünde sanlar bilen massiw we berlen sany kwadrata göterýän käýiriji funksiýany berip, çagyryň.