Bom, estar ai um pequeno tutorial ensinando a utilizar funções anônimas no PHP.
Vamos tomar por exemplo, a seguinte função:
É um código funcional? Claro, é. Mas não é chato ter que criar uma função só para retornar essa mensagem? Não seria ótimo se tivesse um jeito mais fácil? Imagem
Mas tem sim, funções anônimas! O código não fica muito melhor escrito dessa forma?
Como podem ver, não mudou muita coisa...só que nós passamos a declaração da função para a variável, e a função não tem nome, ou seja, só poderá ser chamada essa vez.
Um outro bom exemplo de uso de funções anônimas é quando você precisa passar uma função como callback para outra função:
Como sabem. a função preg_replace_callback recebe três parâmetros: uma pattern de regex, uma função de callback e a string. O segundo parâmetro, ao invés de uma função regular, é uma função anônima.
O que diabos é uma função anônima?
Função anônima nada mais é que uma função que não tem nome.
Não tem nome? Como assim?
É uma função que você não declara do jeito convencional, por isso não tem nome.
Mas se ela não tem nome, como vou chamar-la? E qual a utilidade disso?
A questão é que você não vai chamar-la. Você vai simplesmente passar-la como parâmetro, para alguma outra função, método ou variável.
A vantagem disso é que você não precisa escolher um nome, e ela diminui o código e aumenta a legibilidade, em alguns casos.
Vamos tomar por exemplo, a seguinte função:
Código:
function ola_usuario($nome) {
return strtoupper("Seja bem vindo {$nome}, como vai?");
}
$mensagem_boas_vindas = ola_usuario("matcher");
É um código funcional? Claro, é. Mas não é chato ter que criar uma função só para retornar essa mensagem? Não seria ótimo se tivesse um jeito mais fácil? Imagem
Mas tem sim, funções anônimas! O código não fica muito melhor escrito dessa forma?
Código:
$mensagem_boas_vindas = function($nome){
return strtoupper("Seja bem vindo {$nome}, como vai?");
};
Como podem ver, não mudou muita coisa...só que nós passamos a declaração da função para a variável, e a função não tem nome, ou seja, só poderá ser chamada essa vez.
Um outro bom exemplo de uso de funções anônimas é quando você precisa passar uma função como callback para outra função:
Código:
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'ola-nfx'); //produz "olanfx"
Como sabem. a função preg_replace_callback recebe três parâmetros: uma pattern de regex, uma função de callback e a string. O segundo parâmetro, ao invés de uma função regular, é uma função anônima.