Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declarar uma função anônima
  2. Função anônima como parâmetro/argumento
  3. Função arrow/lambda
  4. Função arrow como parâmetro/argumento e retorno
  5. Escopo estático
  6. Passagem por valor/referência
  7. Parâmetros variáveis
  8. Retornando mais de um valor
  9. Vetor/matriz de funções anônimas/arrow
  10. gettype

Função anônima são funções que não possuem nome sendo declaradas e atribuidas à uma variável. Esse tipo de função possue as mesmas características de funções vistas em PHP Básico: Funções.

Funções arrow são funções anônimas, sem nome e sem palavra reservada function, substituída por fn, que retornam valor. Essas também possuem as mesmas características de funções vistas em PHP Básico: Funções, com exceções.

Nesta parte do tutorial vamos aprender a declarar e utilizar esses tipos de funções mencionados.

Funções anônimas em PHP, como mencionado, são funçoes sem nome e que são declaradas de acordo com a sintaxe abaixo:

Sintaxe
$variavel = function(lista_parametros)
{
    //corpo
    //retorno
};
Onde
function: palavra reservada identificar função
Exemplo 1
<?php
  $funcao = function($val)//declaração e atribuição
  {
    echo $val,"\n";
  };
  
  $funcao(1); //chamada
  $funcao(1.99); //chamada 
  $funcao("uma string PHP"); //chamada
?>
Saída
1
1.99
uma string PHP

Abaixo, um exemplo da declaração de uma função anônima com parâmetros e retorno:

Exemplo 2
<?php
  $funcao = function(int $val):int
  {
    return $val*$val;
  };
  echo $funcao(2);
?>
Saída
4

O uso de funções anônimas como parâmetro/argumentos é feita da mesma forma como para outros tipos. Basta declarar um parâmetro, e ao invocar a função, passar uma função anônima como argumento.

Exemplo 3
<?php
  
  //função principal que recebe função anônima como argumento
  function calculo($val1,$val2,$anonima)
  {
    $anonima($val1,$val2);
  }

  //função anônima para somar 2 números
  $funcao_anonima = function($val1,$val2)
  {
    echo $val1 + $val2;
  };

  //passando função anônima como argumento
  calculo(1,1,$funcao_anonima);
?>
Saída
2

Para retornarmos uma função anônima, basta utilizarmos o a palavra return como já foi feito com outros tipos de dados primitivos.

Exemplo 4
<?php
function funcao() 
{
    $var = function($param)
    {
        echo $param;
    };
    return $var;
}

$retorno = funcao();
$retorno("uma string");
?>
Saída
2

Expressões arrow são funções anônimas, sem nome e sem palavra reservada function, substituída por fn, que podem receber argumentos e retornar valor. A declaração de uma função arrow é feito como na sintaxe abaixo:

Sintaxe
$variavel = fn(argumentos) => <expressao> ;
Onde
fn: Palavra reservada para declaração de função arrow.
argumentos: argumentos separados por (,). Não obrigatório
<expressao>: Uma expressão utilizando os argumentos. 
Notas
  1. Não podem conter comandos de decisão(exceto ?:), repetição ou escolha
  2. Só podem ter uma expressão e um retorno
  3. Podem ser usadas como parâmetro,argumento e retorno
Exemplo 5
<?php
  $funcao = fn($a,$b) => $a + $b; //declaração
  echo $funcao(1,2); //chamada
?>
Saída
3
Exemplo 6
<?php
  $funcao = fn($a,$b) => ($a > 0) ? $a : $b;
  echo $funcao(1,0);
?>
Saída
1

O uso de funções arrow como parâmetro/argumentos é feita da mesma forma utilizada para outros tipos. Basta declarar um parâmetro normalmente e ao invocar a função, passar uma função arrow como argumento.

Exemplo 7
<?php
  //função principal que recebe função arrow como argumento
  function calculo($val1,$val2,$arrow)
  {
    return $arrow($val1,$val2);
  }

  //função arrow para somar 2 números
  $arrow = fn($val1,$val2) => $val1 + $val2;

  //passando função anônima como argumento
  echo calculo(1,1,$arrow);
?>
Saída
2

Para retornarmos uma função arrow, basta utilizarmos o a palavra return como já foi feito com outros tipos.

Exemplo 8
<?php
  function calculo(){
    $arrow = fn($val1,$val2) => $val1 + $val2;
    return $arrow;
  }

  $retorno = calculo();
  echo $retorno(1,1);
?>
Saída
2
  1. 21/08/2025 - revisão 3 - Ajustes: pontuais, sintaxes e targets de links
  2. 21/09/2024 - revisão 2 - ajustes gramaticais pontuais e outros ajustes
  3. 05/02/2024 - revisão 1 - correção em navegação e erros gramaticais
  4. 20/09/2023 - versão inicial