PHP 5.6 - Funções Variádicas (Nova Sintaxe)
PermalinkHá pouco mais de dois dias, foi lançada uma nova versão do PHP, a versão 5.6.0 que trouxe inúmeras novidades e incompatibilidades com as versões anteriores (ver aqui).
Hoje vamos falar de uma das diversas grandes novidades desta esplêndida atualização, as funções variádicas.
Ao longo das versões 4.x e 5.x do PHP, os desenvolvedores já podiam utilizar funções variádicas através do uso da função func_get_args()
.
Se, por exemplo, quiséssemos criar uma função que fizesse a soma de todos os valores passados nos argumentos, bastaria fazermos assim:
function soma() {
return array_sum(func_get_args());
}
echo soma(1, 4, 12, 20); // => 37
Apesar desta forma ainda estar disponível na versão 5.6.0, a sua sintaxe pode ser aprimorada para a seguinte:
function soma(...$nums) {
return array_sum($nums);
}
echo soma(1, 4, 12, 20); //= 37
Ou seja, na nova versão do PHP, basta utilizarmos o operador … para criarmos um array que contenha todos os restantes parâmetros enviados.
Perda de tempo menor
Uma vantagem na utilização deste método é a menor perda de tempo. Como assim? Vou utilizar um exemplo dado pelos colegas do imasters.com.br. Em vez de escrevermos assim:
public function tryMethod() {
$args = func_get_args();
$method = $args[0];
unset($args[0]);
$args = array_values($args);
try {
return call_user_func_array([$this, $method], $args);
} catch (Exception $e) {
return false;
}
}
Podemos, simplesmente, escrever da seguinte forma:
public function tryMethod($method, ...$args) {
try {
return call_user_func_array([$this, $method], $args);
} catch (Exception $e) {
return false;
}
}
Legibilidade
Simples, não é? Outra grande vantagem é a legibilidade visto que o código fica mais legível utilizando esta sintaxe. O exemplo acima é, também, um bom exemplo para este ponto.
Conclusão
Falando mais no geral e vendo a lista de novas funcionalidades/alterações da nova versão do PHP, podemos verificar que a versão traz muitas melhorias.
O que acham vocês, leitores e desenvolvedores, desta nova versão do PHP?