⊗ppSpFnCb 11 of 83 menu

Функции за обратно извикване (callback) в PHP

Функция за обратно извикване (callback) се нарича функция, която се предава като параметър на друга функция.

Нека разгледаме пример. Да предположим, че имаме функция, която приема число като първи параметър, а вторият параметър е функция за обратно извикване:

<?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; } ?>

Извикайте тази функция, като подадете като параметър масив с числа и функция за обратно извикване, която повдига подаденото число на квадрат.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне