Funções de Callback em PHP

Callback é uma função que é passada como parâmetro para outra função.

Vamos ver um exemplo. Suponha que temos uma função que recebe um número como primeiro parâmetro, e um callback como segundo parâmetro:

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

Vamos fazer com que dentro da função nosso callback seja chamado para o número passado:

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

Agora vamos ver quais são as opções para passar um callback para nossa função.

Opção 1

Nosso callback pode ser uma função comum:

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

Neste caso, como callback passamos o nome da nossa função:

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

Dentro da função func nosso callback será chamado pelo nome.

Opção 2

Nosso callback pode ser uma função anônima, atribuída a uma variável:

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

Neste caso, passamos como parâmetro a variável com nossa função:

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

Opção 3

Podemos passar a função anônima diretamente como parâmetro:

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

Opção 4

Podemos encurtar o código usando uma arrow function:

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

Problemas Práticos

Задание 1

Dada uma função que recebe como parâmetro um array e um callback, que será aplicado a cada elemento do array:

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

Chame esta função, passando como parâmetro um array com números e um callback que eleva o número passado ao quadrado.