func_get_args / func_num_args în PHP

Returnează, ca tablou, toate argumentele primite de funcția curentă (func_num_args dă numărul lor).

Sintaxă
func_get_args(): array

Ce face func_get_args / func_num_args

În PHP poți apela o funcție cu mai multe argumente decât are declarate. func_get_args(), apelată în interiorul funcției, returnează toate argumentele primite, iar func_num_args() spune câte sunt. func_get_arg($i) dă un singur argument, după poziție.

În codul nou, varianta mai clară este parametrul variadic ...$valori, care strânge argumentele rămase într-un tablou și poate avea tip.

Ce returnează

Un tablou cu argumentele, în ordinea în care au fost date.

Exemple

Exemplul 1: Argumente în plus

<?php
function suma()
{
    echo "Am primit " . func_num_args() . " argumente\n";
    return array_sum(func_get_args());
}

echo suma(10, 20, 5.5);

Rezultat

Am primit 3 argumente
35.5

Exemplul 2: Varianta modernă: parametrul variadic

<?php
function eticheta(string $titlu, string ...$taguri): string
{
    return $titlu . " [" . implode(", ", $taguri) . "]";
}

echo eticheta("Ghid PHP", "php", "începători", "tutorial") . "\n";
echo eticheta("Știri");

Rezultat

Ghid PHP [php, începători, tutorial]
Știri []

Greșeli frecvente

  • Apelezi func_get_args() în afara unei funcții. Primești eroarea Cannot call func_get_args() from the global scope.
  • Folosești func_get_args și semnătura funcției nu mai spune ce primește. Editorul și colegii nu știu cum să o apeleze. Preferă ...$valori.

Comenzi înrudite

  • function: Definește o funcție proprie: un bloc de cod cu nume, pe care îl poți apela de oricâte ori.
  • call_user_func / call_user_func_array: Apelează o funcție dată printr-o variabilă (nume, closure sau metodă), cu argumentele primite.
  • debug_backtrace: Returnează lista apelurilor de funcții care au dus până în punctul curent al codului.