Novidade no PHP 5.6: Funções Variádicas e Desempacotamento de Argumentos

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:

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);
}

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:

function quebrar_linha(...$linhas) {
    foreach ($linhas as $linha) {
        echo $linha . '\n';
    }
}

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:

$email[] = 'fulano@site.com';
$email[] = 'Assunto';
$email[] = 'Mensagem';

mail(...$email);

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!

  • Affonso

    Que bom que tu voltou a escrever aqui, cara! Os teus textos são muito bons.

  • Realmente, cara, seus artigos são ótimos! (y)
    Espero ver mais e mais. :)