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 eroareaCannot 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.