Resumo : neste tutorial, você aprenderá sobre as funções variáveis do PHP que aceitam um número variável de argumentos.
Introdução às funções variáveis do PHP
Até agora, você aprendeu como definir funções que aceitam um número fixo de parâmetros . Uma função variável aceita um número variável de parâmetros.
O exemplo a seguir define uma função chamada sum()
que retorna a soma de dois inteiros:
<?php
function sum(int $x, int $y)
{
return $x + $y;
}
echo sum(10, 20); // 30
Linguagem de código: PHP ( php )
Para permitir que a sum()
função aceite uma variável de argumentos, você precisa usar func_get_args()
function. A func_num_args()
função retorna um array que contém todos os argumentos da função. Por exemplo:
<?php
function sum()
{
$numbers = func_get_args();
$total = 0;
for ($i = 0; $i < count($numbers); $i++) {
$total += $numbers[$i];
}
return $total;
}
echo sum(10, 20) . '<br>'; // 30
echo sum(10, 20, 30) . '<br>'; // 60
Linguagem de código: PHP ( php )
Neste exemplo, não especificamos nenhum parâmetro para a sum()
função. Ao chamar a sum()
função, podemos passar qualquer número de argumentos para ela.
Dentro da função, func_get_args()
retorna um array que contém todos os argumentos. Para resumir todos os argumentos, usamos um for
loop.
PHP 5.6 introduziu o ...
operador. Quando você coloca o ...
operador na frente de um parâmetro de função, a função aceitará um número variável de argumentos e o parâmetro se tornará um array dentro da função. Por exemplo:
<?php
function sum(...$numbers)
{
$total = 0;
for ($i = 0; $i < count($numbers); $i++) {
$total += $numbers[$i];
}
return $total;
}
echo sum(10, 20) . '<br>'; // 30
echo sum(10, 20, 30) . '<br>'; // 60
Linguagem de código: PHP ( php )
Neste exemplo, colocamos o ...
operador na frente do $numbers
argumento. A sum()
função agora aceita uma variável de argumentos numéricos.
O PHP 7 permite declarar tipos para argumentos variados. Por exemplo:
<?php
function sum(int ...$numbers): int
{
$total = 0;
for ($i = 0; $i < count($numbers); $i++) {
$total += $numbers[$i];
}
return $total;
}
Linguagem de código: PHP ( php )
Neste exemplo, a sum()
função aceitará apenas números inteiros e retornará a soma dos números inteiros.
Se uma função tiver vários parâmetros, apenas o último parâmetro poderá ser variável. Por exemplo:
function my_func($a, $b, ...$params) {
// ...
}
Linguagem de código: PHP ( php )
Se você colocar o parâmetro variadico antes de um parâmetro normal, você receberá um erro:
Fatal error: Only the last parameter can be variadic in...
Linguagem de código: PHP ( php )
E uma função possui apenas um parâmetro variável.
Observe que você pode usar array_sum()
para calcular a soma de todos os elementos de uma matriz. Então você pode simplificar a sum()
função assim:
<?php
function sum(int ...$numbers): int
{
return array_sum($numbers);
}
Linguagem de código: PHP ( php )
Resumo
- Uma função variável aceita um número variável de argumentos.
- Use o
...
operador para definir uma função variada. - Apenas o último parâmetro pode ser variável.