Callback funkce v PHP

Callback je funkce, která je předána jako parametr do jiné funkce.

Podívejme se na příklad. Předpokládejme, že máme funkci, která jako první parametr přijímá číslo, a jako druhý parametr - callback:

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

Udělejme, aby uvnitř funkce byl náš callback volán pro předané číslo:

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

Nyní se podívejme, jaké existují možnosti předání callbacku do naší funkce.

Možnost 1

Náš callback může být obyčejná funkce:

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

V tomto případě jako callback předáme jméno naší funkce:

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

Uvnitř funkce func bude náš callback volán podle jména.

Možnost 2

Náš callback může být anonymní funkce, zapsaná do proměnné:

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

V tomto případě parametrem předáme proměnnou s naší funkcí:

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

Možnost 3

Lze předat anonymní funkci okamžitě parametrem:

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

Možnost 4

Kód lze zkrátit použitím arrow funkce:

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

Praktické úlohy

Задание 1

Je dána funkce, která parametrem přijímá pole a callback, který se aplikuje na každý prvek pole:

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

Volejte tuto funkci, jako parametr předávejte pole s čísly a callback, který umocní předané číslo na druhou.