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
function func($num, $calb)
{
}
?>
Vamos fazer com que dentro da função nosso callback seja chamado para o número passado:
<?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
function calb($num) {
return $num ** 2;
}
?>
Neste caso, como callback passamos o nome da nossa função:
<?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
$calb = function($num) {
return $num ** 2;
};
?>
Neste caso, passamos como parâmetro a variável com nossa função:
<?php
func(3, $calb);
?>
Opção 3
Podemos passar a função anônima diretamente como parâmetro:
<?php
func(3, function($num) {
return $num ** 2;
});
?>
Opção 4
Podemos encurtar o código usando uma arrow function:
<?php
func(3, fn($num) => $num ** 2);
?>
Problemas Práticos
Dada uma função que recebe como parâmetro um array e um callback, que será aplicado a cada elemento do array:
<?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.