Funções anônimas, também conhecidas como closures
, permitem a criação de funções que não tem o nome especificado.
É comum a utilização de funções anônimas como callback
, isto é, quando passamos a função anônima como parâmetro e num determinado momento, a função que a recebeu, invoca a função e dá continuidade ao processamento.
Funções anônimas são implementadas utilizando a classe Closure
que podem ser utilizadas como valores de variáveis.
Uma função anônima possui um bloco de instrução, porém, não possuem referência que as identifiquem e, por consequência, não estarão no escopo para que possamos invoca-las.
A vantagem das funções anônimas é que podemos armazená-las e manipulá-las como fazemos com variáveis, e assim, podemos enviá-las como sendo um parâmetro de uma função.
Assim, temos que uma função anônima possui todas as características e, funciona com os mesmos princípios que qualquer função, porém, como o nome sugere, esta não possui um nome - por isso: anônima!
Para atribuirmos uma função anônima a uma variável, basta declararmos um bloco e atribuirmos este, diretamente, a uma determinada variável. Veja o exemplo:
<?php
$func = function($nome)
{
echo('Olá, ' . $nome . PHP_EOL);
};
$func('mundo!'); // saída Olá, mundo!
$func('PHP!'); // Olá, mundo!
Todas as funções que criamos não tem acesso ao escopo externo, logo, qualquer variável fora da função não é acessível dentro da função a não ser que passemos por argumento mas é possível também utilizar a instrução use
. Veja o exemplo:
$mensagem = 'Olá, mundo! ';
$exemplo = function () use ($mensagem)
{
echo 'A mensagem é: '. $mensagem . PHP_EOL;
};
$exemplo();