Funcții callback în PHP

Un callback este o funcție care este transmisă ca parametru unei alte funcții.

Să ne uităm la un exemplu. Să presupunem că avem o funcție care primește un număr ca prim parametru, iar al doilea parametru - un callback:

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

Să facem astfel încât în interiorul funcției callback-ul nostru să fie apelat pentru numărul transmis:

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

Să vedem acum ce variante de transmitere a callback-ului în funcția noastră există.

Varianta 1

Callback-ul nostru poate fi o funcție obșnuită:

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

În acest caz, ca callback vom transmite numele funcției noastre:

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

În interiorul funcției func callback-ul nostru va fi apelat după nume.

Varianta 2

Callback-ul nostru poate fi o funcție anonimă, scrisă într-o variabilă:

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

În acest caz, transmitem ca parametru variabila cu funcția noastră:

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

Varianta 3

Puteți transmite funcția anonimă imediat ca parametru:

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

Varianta 4

Puteți scurta codul, utilizând o funcție săgeată:

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

Probleme practice

Задание 1

Este dată o funcție care primește ca parametru un array și un callback, care se va aplica fiecărui element al array-ului:

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

Apelați această funcție, transmitând ca parametru un array cu numere și un callback care ridică numărul transmis la pătrat.