Callback funkcije v PHP-ju

Callback je funkcija, ki se posreduje kot parameter drugi funkciji.

Poglejmo si primer. Recimo, da imamo funkcijo, ki sprejme število kot prvi parameter, in callback kot drugi parameter:

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

Naredimo tako, da znotraj funkcije naš callback pokličemo za posredovano število:

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

Poglejmo si zdaj, katere možnosti posredovanja callbacka v našo funkcijo obstajajo.

Možnost 1

Naš callback je lahko običajna funkcija:

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

V tem primeru kot callback posredujemo ime naše funkcije:

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

Znotraj funkcije func bo naš callback poklican po imenu.

Možnost 2

Naš callback je lahko anonimna funkcija, zapisana v spremenljivko:

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

V tem primeru kot parameter posredujemo spremenljivko z našo funkcijo:

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

Možnost 3

Anonimno funkcijo lahko posredujemo takoj kot parameter:

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

Možnost 4

Kodo lahko skrajšamo z uporabo strelične funkcije:

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

Praktične naloge

Задание 1

Podana je funkcija, ki kot parameter sprejme tabelo in callback, ki se uporabi za vsak element tabele:

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

Pokličite to funkcijo, kot parameter posredujte tabelo s števili in callback, ki posredovano število kvadrira.