Jeśli z góry wiadomo jakie parametry przyjmuje funkcja to wykorzystanie func_get_args nie ma sensu. Jeśli chodzi o wydajność to podejrzewam, że wykorzystanie func_get_args jest wolniejsze niż jawne określenie parametrów.
Dla przykładu funkcja z helpera: url_for - może przyjąć 2 lub 3 parametry. W tej sytuacji na podstawie pierwszego parametru wywoływana jest kolejny funkcja z wszystkimi parametrami jakie zostały przekazane do url_for - i tak naprawdę w tym momencie nie jest istotne ile parametrów zostało przekazanych do url_for. Tak jak napisałem wcześniej jest to obejście dla dwóch funkcji o tych samych nazwach i różnych argumentach:
function url_for($internal_uri, $absolute = false)
function url_for
($routeName, $params = array(), $absolute = false):
function url_for()
{
// for BC with 1.1
if (is_array($arguments[0
]) || '@' == substr($arguments[0
], 0
, 1
) || false !== strpos($arguments[0], '/')) {
return call_user_func_array('url_for1', $arguments);
}
else
{
return call_user_func_array('url_for2', $arguments);
}
}