PHP atgalinio kvietimo funkcijos

Atgalinio kvietimo funkcija yra funkcija, kuri perduodama kaip parametras į kitą funkciją.

Pažiūrėkime pavyzdį. Tarkime, kad turime funkciją, kuri pirmu parametru priima skaičių, o antru parametru - atgalinio kvietimo funkciją:

php<?php
  function func($num, $calb)
  {
    
  }
?>

Padarykime taip, kad funkcijos viduje mūsų atgalinio kvietimo funkcija būtų iškviesta su perduotu skaičiumi:

php<?php
  function func($num, $calb)
  {
    echo $calb($num);
  }
?>

Dabar pažiūrėkime, kokie yra atgalinio kvietimo funkcijos perdavimo į mūsų funkciją variantai.

1 variantas

Mūsų atgalinio kvietimo funkcija gali būti įprasta funkcija:

php<?php
  function calb($num) {
    return $num ** 2;
  }
?>

Šiuo atveju kaip atgalinio kvietimo funkciją mes perduosime mūsų funkcijos pavadinimą:

php<?php
  func(3, 'calb');
?>

Funkcijos func viduje mūsų atgalinio kvietimo funkcija bus iškviesta pagal pavadinimą.

2 variantas

Mūsų atgalinio kvietimo funkcija gali būti anonime funkcija, įrašyta į kintamąjį:

php<?php
  $calb = function($num) {
    return $num ** 2;
  };
?>

Šiuo atveju mes parametru perduodame kintamąjį su mūsų funkcija:

php<?php
  func(3, $calb);
?>

3 variantas

Galima perduoti anonime funkciją iškart kaip parametrą:

php<?php
  func(3, function($num) {
    return $num ** 2;
  });
?>

4 variantas

Galima sutrumpinti kodą, naudojant rodyklinę funkciją:

php<?php
  func(3, fn($num) => $num ** 2);
?>

Praktinės užduotys

Задание 1

Duota funkcija, parametru priimanti masyvą ir atgalinio kvietimo funkciją, kuri bus pritaikyta kiekvienam masyvo elementui:

php<?php
  function func($arr, $calb)
  {
    $res = [];
    
    foreach ($arr as $elem) {
      $res[] = $calb($elem);
    }
    
    return $res;
  }
?>

Iškvieskite šią funkciją, kaip parametrą perduodant masyvą su skaičiais ir atgalinio kvietimo funkciją, kuri pakelia perduotą skaičių kvadratu.