Se você já estudou um pouco sobre programação funcional, provavelmente já ouviu falar sobre a função que nomeia este artigo. E além disso, se estudou Javascript, possivelmente já estudou muito sobre esse conceito.
Trago neste artigo uma dica rápida de como aplicar este conceito tão popular na programação funcional (amplamente popularizado pelo Javascript) dentro do PHP.
Arrow function
As arrow functions foram introduzidas no PHP a partir da versão 7.4 da linguagem, e tem como principais missões dar produtividade ao desenvolvedor e facilitar o trabalho com escopo.
Vamos ver um exemplo de código sem usar arrow function:
$valorDoEmprestimo = 30000;
$taxaDeJuros = 18.63;
function calcularJuros($emprestimo, $taxa) {
return $emprestimo * ($taxa/100);
}
var_dump(calcularJuros($valorDoEmprestimo, $taxaDeJuros));
Vamos supor que essa taxa é fixa e não precisa ser passada como parâmetro:
$valorDoEmprestimo = 30000;
$taxaDeJuros = 18.63;
function calcularJuros($emprestimo) {
return $emprestimo * ($taxaDeJuros/100);
}
var_dump(calcularJuros($valorDoEmprestimo));
Nesse caso, vamos receber um erro:
Undefined variable: taxaDeJuros
Porque a variável $taxaDeJuros
foi declarada fora da função calcularJuros
e por conta do escopo, ela não é enxergada dentro da função. Aí que entra a arrow function.
Antes, vamos ver o mesmo exemplo de código com uma função anônima:
$valorDoEmprestimo = 30000;
$taxaDeJuros = 18.63;
$jurosCalculados = function ($emprestimo) use ($taxaDeJuros) {
return $emprestimo * ($taxaDeJuros/100);
};
var_dump($jurosCalculados($valorDoEmprestimo));
Bom, resolvemos em parte o nosso problema. O use
nos permite "herdar" variáveis do escopo pai. Não precisamos passar como parâmetro na função, mas ainda assim precisamos referenciar.
Agora, o mesmo exemplo de código usando arrow function:
$valorDoEmprestimo = 30000;
$taxaDeJuros = 18.63;
$jurosCalculados = fn ($emprestimo) => $emprestimo * ($taxaDeJuros/100);
var_dump($jurosCalculados($valorDoEmprestimo));
Muito mais conciso, não é? Mas o que mudou? Vamos enumerar:
- Redução da palavra function para apenas fn
- Substituição do par de chaves
{ }
pela arrow=>
- Supressão do
return
- E, finalmente, não foi preciso referenciar a variável
$taxaDeJuros
em lugar nenhum. Ela simplesmente foi reconhecida por ser do escopo pai.
Fácil, né?
Se ficou alguma dúvida ou gostaria de dar um feedback, deixa um comentário. :)
No próximo artigo vou trazer outros conceitos da programação funcional usando as funções map
, filter
e reduce
no PHP.
Top comments (1)
Explicação simples e rápida, show de bola.
Salvando aqui para ler sempre que precisar.