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!

Thumbnail_w640_h190_m_default__uploads_Modules_Newsletters_banner

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!