Funções Variádicas PHP

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); // 30Linguagem 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>'; // 60Linguagem 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 forloop.

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>'; // 60Linguagem de código:  PHP  ( php )

Neste exemplo, colocamos o ...operador na frente do $numbersargumento. 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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *