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 може да буде анонимна функција, уписанa у променљиву:

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

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

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

Вариант 3

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

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

Вариант 4

Код се може скратити коришћењем arrow функције:

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, који прослеђени број квадрира.