Callback-funktioner i PHP

En callback er en funktion, som overføres som en parameter til en anden funktion.

Lad os se på et eksempel. Antag, at vi har en funktion, som tager et tal som første parameter, og en callback som anden parameter:

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

Lad os gøre sådan, at inde i funktionen bliver vores callback kaldt med det overførte tal:

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

Lad os nu se, hvilke muligheder der er for at overføre en callback til vores funktion.

Mulighed 1

Vores callback kan være en almindelig funktion:

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

I dette tilfælde overfører vi navnet på vores funktion som callback:

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

Inde i funktionen func vil vores callback blive kaldt på navn.

Mulighed 2

Vores callback kan være en anonym funktion, gemt i en variabel:

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

I dette tilfælde overfører vi variablen med vores funktion som parameter:

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

Mulighed 3

Man kan overføre den anonyme funktion directe som parameter:

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

Mulighed 4

Man kan forkorte koden ved at bruge pilefunktion:

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

Praktiske opgaver

Задание 1

Der gives en funktion, som parameter tager et array og en callback, der vil blive anvendt på hvert element i arrayet:

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

Kald denne funktion, og overfør som parameter et array med tal og en callback, der opløfter det overførte tal i anden potens.