A partir da versão 7.4 do PHP podemos usar arrow funções ou Funções de Setas.
Uma função de seta fornece uma sintaxe mais curta e possibilita-nos a escrever uma função anônima também mais curta.
A sintaxe é essa:
fn (argumentos) => expressão;
Usamos a palavra chave fn.
É bom notar que pode ter apenas uma expressão e podemos retorná-la.
Um arrow function é similar a essa função anônima:
function(argumentos) { return expressão; }
Mas ao contrário das funções anônimas, a função de seta(arrow functions) pode acessar automaticamente as variáveis dos escopos acima dela.
Atribuindo uma função de seta a uma variável
$igual = fn ($x, $y) => $x == $y;
echo $igual(100, '100'); // 1 ou true
A função de seta retornará true se os dois argumentos forem iguais. Após chamamos a função de seta através da variável $igual
Passando uma função de seta para uma função
Vejamos como passar uma função de seta para a função array_map()
$lista = [1, 8, 4, 7];
$resultado = array_map(
fn ($item) => $item * 2, $lista );
echo "<pre>";
print_r($resultado);
echo "</pre>";
Resultado:
Array
(
[0] => 2
[1] => 16
[2] => 8
[3] => 14
)
Retornando uma função de seta de uma função
Abaixo,
- definimos uma função chamada multiplicador() que aceita um argumento e retorna uma função de seta.
- Como a função de seta pode acessar a variável de seu escopo pai, podemos usar o parâmetro $x dentro da função de seta.
- chamamos a função multiplicador() e atribuímos o valor retornado à variável $dobrar. O valor retornado da função multiplicador() é uma função, portanto, podemos chamá-la através da variável $dobrar.
function multiplicador($x)
{
return fn ($y) => $x * $y;
}
$dobrar = multiplicador(2);
echo $dobrar(10); // 200
Conclusão
Aqui vimos sobre arrow functions ou, tentando traduzir, funções de seta.