Arrow Functions no PHP

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:

https://www.php.net/manual/pt_BR/functions.arrow.php