Funções de Seta
   
    Funções de seta foram introduzidas a partir do PHP 7.4 como uma sintaxe mais concisa para
    funções anônimas.
   
   
    Funções anônimas e funções de seta são implementadas usando a classe
    Closure.
   
   
    Funções de seta têm a forma básica
    fn (argument_list) => expr.
   
   
    Funções de seta possuem as mesmas características das
    funções anônimas,
    exceto que o uso de variáveis do escopo pai é sempre automático.
   
   
    Quando uma variável usada na expressão é definida no escopo pai,
    ela será implicitamente capturada por valor.
    No exemplo a seguir, as funções $fn1 e
    $fn2comportam-se da mesma maneira.
   
   
    
     Exemplo #1 Funções de seta capturam variáveis por valor automaticamente
     
<?php
$y = 1;
$fn1 = fn($x) => $x + $y;
// Equivalente ao usar $y por valor:
$fn2 = function ($x) use ($y) {
    return $x + $y;
};
var_export($fn1(3));
?>
      
     O exemplo acima produzirá:
 
   
   
    Isso também funciona se as funções de seta estiverem aninhadas:
   
   
    
     Exemplo #2 Funções de seta capturam variáveis por valor automaticamente, mesmo quando aninhadas
     
<?php
$z = 1;
$fn = fn($x) => fn($y) => $x * $y + $z;
// Outputs 51
var_export($fn(5)(10));
?>
      
     
   
   
    Da mesma forma que funções anônimas,
    a sintaxe das funções de seta permitem assinaturas de função arbitrária,
    incluindo parâmetros e tipos de retorno, valores padrão, variadics,
    bem como por referência passando e retornando.
    Todos os exemplos válidos de funções de seta:
   
   
    
     Exemplo #3 Exemplos de funções de seta
     
<?php
fn(array $x) => $x;
static fn($x): int => $x;
fn($x = 42) => $x;
fn(&$x) => $x;
fn&($x) => $x;
fn($x, ...$rest) => $rest;
?>
      
     
   
   
    Funções de seta usam vinculação de variável por valor.
    Isso é aproximadamente equivalente a realizar um use($x) para cada
    variável $x usada dentro da funções de seta.
    Uma passagem de variável por valor, significa que não é possível modificar quaisquer valores
    do escopo externo.
    Funções anônimas
    podem ser usadas em vez disso para passagem de variável por referência.
   
   
    
     Exemplo #4 Valores do escopo externo não podem ser modificados por funções de seta
     
<?php
$x = 1;
$fn = fn() => $x++; // Não tem efeito
$fn();
var_export($x);  // Imprime 1
?>