Callback функции во PHP

Callback е функција која се пренесува како параметар во друга функција.

Да погледнеме на пример. Нека имаме функција која како прв параметар прифаќа број, а како втор параметар - callback:

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

Да направиме така што внатре во функцијата нашиот callback да се повика за пренесениот број:

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

Сега да видиме какви опции за пренесување на callback во нашата функција постојат.

Опција 1

Нашиот callback може да биде обична функција:

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

Во овој случај како callback ќе го пренесеме името на нашата функција:

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

Внатре во функцијата func нашиот callback ќе се повика по име.

Опција 2

Нашиот callback може да биде анонимна функција, запишана во променлива:

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

Во овој случај како параметар ја пренесуваме променливата со нашата функција:

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

Опција 3

Може да се пренесе анонимна функција веднаш како параметар:

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

Опција 4

Може да се скрати кодот, користејќи стрелка функција:

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

Практични задачи

Задание 1

Дадена е функција, која како параметар прифаќа низа и callback, кој ќе се примени на секој елемент од низата:

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

Повикајте ја оваа функција, како параметар пренесувајќи низа со броеви и callback, кој го подига пренесениот број на квадрат.