Postado em 4 de abril de 2014
Novidade no PHP 5.6: Funções Variádicas e Desempacotamento de Argumentos
Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!
Enquanto o PHP 6 não sai, vão surgindo novidades na versão anterior.
Hoje quero apresentar pra vocês duas coisas sensacionais: funções variádicas e desempacotamento de argumentos!
O que raios são funções variádicas?
São funções que permitem a passagem de um número indeterminado de argumentos. É comum no PHP a utilização de funções cujos os primeiros parâmetros sejam fixos e os subsequentes variam.
Um exemplo de função variádica no PHP é array_merge()
. Podemos ver o protótipo dela na página do PHP:
[code]array array_merge ( array $array1 [, array $array2 [, array $… ]] )[/code]
Pelo protótipo podemos ver que é possível fundir um número infinito de arrays utilizando essa função.
Antigamente era possível criar funções assim no PHP através da utilização da função func_get_args()
. Essa função retorna todos os argumentos passados para uma função, independentemente se foram declarados ou não. No caso das funções variádicas é mais fácil de realizar essa declaração.
Utilizando funções variádicas
Vamos construir uma função para receber valores indeterminados e separá-los por um caractere específico:
[php]function juntar($caractere, …$strings) {
// Como $strings será um array com todos os valores passados
// podemos utilizar o implode pra juntar tudo
return implode($caractere, $strings);
}[/php]
Você pode passar dois parâmetros, no mínimo, para essa função. O primeiro parâmetro é estático e todos os subsequentes serão colocados em um array.
Podemos também criar uma função para imprimir vários valores com um \n
no final:
[php]function quebrar_linha(…$linhas) {
foreach ($linhas as $linha) {
echo $linha . ‘\n’;
}
}[/php]
Desempacotamento de argumentos
Outra coisa bacana no PHP 5.6 é a possibilidade de utilizar o mesmo operador para avisar ao PHP que deve desempacotar o array que está sendo passado.
Para esse exemplo podemos utilizar a função mail()
. Para ela são suficientes três parâmetros e vamos utilizá-los da seguinte maneira:
[php]$email[] = ‘fulano@site.com’;
$email[] = ‘Assunto’;
$email[] = ‘Mensagem’;
mail(…$email);
[/php]
O operador variádico (alguns chamam de “splat operator”) indica ao PHP que deve desempacotar os valores do array e separar entre os argumentos.
Considerações
PHP é uma linguagem em constante evolução. Tão logo esta versão nova seja lançada e possamos colocá-la em produção, vou postar novos tutoriais demonstrando a utilização de novas funcionalidades.
Espero que tenham gostado do post de hoje!
Um abraço a todos e fiquem com Deus!