Callback funkcie v PHP

Callback je funkcia, ktorá sa odovzdáva ako parameter do inej funkcie.

Pozrime sa na príklad. Predpokladajme, že máme funkciu, ktorá ako prvý parameter prijíma číslo, a ako druhý parameter - callback:

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

Urobme to tak, aby vo vnútri funkcie bol náš callback zavolaný s odovzdaným číslom:

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

Pozrime sa teraz, aké možnosti odovzdania callbacku do našej funkcie existujú.

Možnosť 1

Našim callbackom môže byť obyčajná funkcia:

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

V tomto prípade ako callback odovzdáme meno našej funkcie:

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

Vo vnútri funkcie func bude náš callback zavolaný podľa mena.

Možnosť 2

Našim callbackom môže byť anonymná funkcia, zapísaná do premennej:

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

V tomto prípade ako parameter odovzdáme premennú s našou funkciou:

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

Možnosť 3

Môžeme odovzdať anonymnú funkciu priamo ako parameter:

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

Možnosť 4

Môžeme skrátiť kód pomocou arrow funkcie:

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

Praktické úlohy

Задание 1

Daná je funkcia, ktorá ako parameter prijíma pole a callback, ktorý sa aplikuje na každý prvok poľa:

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

Zavolajte túto funkciu, ako parameter odovzdajte pole s číslami a callback, ktorý umocní odovzdané číslo na druhú.