ფუნქციები-კოლბეკები 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;
}
?>
გამოიძახეთ ეს ფუნქცია, პარამეტრად გადაცემული მასივი რიცხვებით და კოლბეკი, რომელიც ამცირებს გადაცემულ რიცხვს კვადრატში.