As arrow functions tão populares no mundo JavaScript estão disponíveis no PHP a partir da versão 7.4.
Esta funcionalidade deixa a utilização de funções anônimas com uma sintaxe mais enxuta.
Deixando de blá blá blá, vamos ao código…
Abaixo uma função que multiplica um número qualquer por dois utilizando função anônima:
<?php
$multiplicar = function($valor){
return $valor * 2;
};
echo $multiplicar(5);
// imprime 10
Agora a mesma função utilizando arrow functions:
<?php
$multiplicar = fn($valor) => $valor * 2;
echo $multiplicar(5);
// imprime 10
A função utilizou apenas uma linha e o retorno é automático, sem necessidade de utilizar o “return“.
Outra característica das arrow functions é que podem acessar variáveis do escopo externo automaticamente.
Vamos ao mesmo exemplo, porém colocando o valor de multiplicação em uma variável fora do escopo da função:
<?php
$multiplicador = 2;
$multiplicar = function($valor) use ($multiplicador){
return $valor * $multiplicador;
};
echo $multiplicar(5);
// imprime 10
No exemplo acima foi necessário deixar explicito pelo “use” que a variável “multiplicador” seria acessada na função.
O mesmo caso com arrow functions:
<?php
$multiplicador = 2;
$multiplicar = fn($valor) => $valor * $multiplicador;
echo $multiplicar(5);
// imprime 10
Porém… apesar de ser possível acessar as variáveis de escopo esterno, não é possível modificar as variáveis dentro da função, vide o código abaixo:
<?php
$multiplicador = 2;
$multiplicar = fn($valor) => $valor * $multiplicador++;
echo $multiplicador;
// imprime 2
Isso é tudo, pessoal!
Referência: