Funções Anônimas em PHP
Posted on 19 de outubro de 2010, in Artigos, with 2 CommentsIntrodução
Não é novidade para ninguém que foram incluídos no PHP 5.3 alguns recursos novos que a tornam uma linguagem melhor e mais completa.
A novidade é que eu irei publicar aqui a partir deste post, exemplos de como escrever código PHP usando estas funcionalidades.
Minha idéia é de escrever posts curtos e direto ao ponto.
As funções anônimas, também conhecidas como closures e lambda functions são funcionalidades que são definidas sem que elas possuam um nome que as identifica e normalmente são usadas para definirmos funções que não serão utilizadas em nenhum outro local, apenas naquele momento específico.
Como eu uso isso?
Normalmente quando escrevemos uma função, nós declaramos o nome dela e assim sabemos como identifica-la na hora em que precisamos usa-la.
Exemplo:
O exemplo acima demonstra a maneira convencional que declaramos e usamos as funções em PHP, abaixo eu mostrarei alguns exemplos de uso das funções anônimas.
O próximo exemplo é a declaração e uso de uma função semelhante à declarada no exemplo anterior, porém, na forma de função anônima:
Como você pôde observar, a função não recebe um nome quando é declarada e sim ela é atribuída a uma variável comum PHP.
Nós podemos utilizar nestas funções as variáveis declaradas fora de seu escopo, para isso nós devemos importar as variáveis por meio do comando use.
Exemplo:
É possível usar variáveis passadas como referência. O exemplo anterior será modificado para ilustrar a funcionalidade:
Faça o teste e veja que se o operador de referência(&) for removido, a variável $sobrenome não é modificada fora do escopo da função.
As closures podem ser muito bem aproveitadas em conjunto com funções nativas do PHP que necessitam de uma função de callback, como a função array_map que será a função usada em meu exemplo. Veja:
O código acima exemplifica o que falei anteriormente a respeito de declarar funções que não serão usadas em mais nenhum lugar.
Usando isso em objetos
Esta funcionalidade também pode ser usada no paradigma POO e o conceito é exatamente o mesmo, basta preparar o seu método para receber uma função desta como parâmetro. Exemplo:
Conclusão
Este é mais um recurso que o PHP oferece para torna-lo mais ágil e eficiente.
Os exemplos que eu apresentei já servem como ponto de partida para estudos mais aprofundados e eu espero que ele tenha sido útil para você.
Se você já usou este recurso em situações diferentes das que eu apresentei, deixe seu comentário.
Abraços.
Adler Medrado – http://adlermedrado.com.br
Tags:5.3, anonimas, funcoes, lambda, Php
Leave Your Comment →
2 Comments
Fernando Binasco
04.21.2011 ·
Daniel Maffioletti
04.22.2011 ·