Callback függvények PHP-ben

Callback függvénynek nevezzük azt a függvényt, amelyet paraméterként adunk át egy másik függvénynek.

Nézzünk egy példát. Tegyük fel, hogy van egy függvényünk, amely első paraméterként egy számot fogad, második paraméterként pedig egy callback-et:

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

Tegyük úgy, hogy a függvényen belül a callbackünk meghívásra kerüljön az átadott számra:

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

Nézzük most meg, milyen lehetőségek vannak a callback függvény átadására.

1. lehetőség

A callback lehet egy sima függvény:

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

Ebben az esetben a callbackként a függvényünk nevét adjuk át:

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

A func függvényen belül a callback a neve alapján lesz meghívva.

2. lehetőség

A callback lehet egy anonim függvény, amelyet egy változóba mentünk:

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

Ebben az esetben paraméterként átadjuk a függvényt tartalmazó változót:

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

3. lehetőség

Az anonim függvényt közvetlenül át is adhatjuk paraméterként:

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

4. lehetőség

A kód rövidíthető nyíl függvény használatával:

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

Gyakorlati feladatok

Задание 1

Adott egy függvény, amely paraméterként egy tömböt és egy callback-et fogad, amely a tömb minden elemére alkalmazva lesz:

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

Hívja meg ezt a függvényt, paraméterként átadva egy számokat tartalmazó tömböt és egy callback-et, amely az átadott számot négyzetre emeli.