No artigo anterior, falamos sobre Funções Variádicas, que ganhou uma sintaxe nova no PHP 5.6. Neste artigo, veremos um recurso adicional e similar, que é o desempacotamento de parâmetros em funções e métodos através do símbolo de reticências. O operador é conhecido em outras linguagens como operador "splat".
Sintaxe do Desempacotamento de Parâmetros em Funções no PHP
A nova sintaxe para desempacotamento de parâmetros em funções e métodos é usar a reticências antes do nome de um parâmetro do tipo array, passado para uma função ou método. Com isso, cada elemento do array é passado para a função como se fosse um parâmetro. Algo similar ao operador list, que pega um array e desempacota em variáveis específicas. Veja um exemplo de desempacotamento de parâmetros:
// Funcao que recebe 4 parametros function teste($a, $b, $c, $d) { return $a + $b + $c + $d; } // Utilizacao convencional da funcao, passando cada parametro com uma variavel $a = 1; $b = 2; $c = 3; $d = 4; teste($a, $b, $c, $d); // Utilizacao da funcao usando desempacotamento de parametros $parametros = array(1, 2, 3, 4); teste(...$parametros); // Outro exemplo, mas passando alguns parametros de forma convencion // e outros via desempacotamento $a = 1; $parametros = array(2, 3, 4); teste($a, ...$parametros); // Outro exemplo $a = 1; $parametros = array(2, 3); $d = 4; teste($a, ...$parametros, $d);
Pelos exemplos, dá pra notar que qualquer parâmetro pode ser passado a partir de um array. Caso existam mais elementos do que o necessário no array, eles são ignorados, assim como ocorre se forem passados mais parâmetros para uma função do que o necessário.
Conclusão
O operador splat é bem vindo à linguagem PHP.
O objetivo desta nova sintaxe é tornar a codificação mais ágil, tendo em vista que array é uma estrutura de dados muito comum de ser usada em PHP como container de dados e não apenas para uma sequência de elementos com características comuns.
A única observação que faço a respeito deste novo recurso é que, dependendo da forma como é usado, pode tornar o código menos legível. Veja o último exemplo mostrado anteriormente: nele não é tão fácil identificar que $d é o quarto parâmetro passado para função e não o terceiro. Portanto, quem está depurando um código que utiliza esta sintaxe vai precisar ter atenção à forma como o array $parametros foi criado, para saber quantos elementos tem lá. Portanto, utilize com moderação.
0 comentários
Postar um comentário
Nota: fique a vontade para expressar o que achou deste artigo ou do blog.
Dica: para acompanhar as respostas, acesse com uma conta do Google e marque a opção "Notifique-me".
Atenção: o blogger não permite inclusão de tags nos comentários, por isso, use algum site externo para postar seu código com dúvidas e deixe o link aqui. Exemplo: pastebin.com