Sie können die Argumente einfach einfügen, indem Sie func_get_args()
et le Variadic
ou ...
hinzugefügt in 5.6.
Als verfahrenstechnische Funktion
function foo($arg,$arg1) {
__FUNCTION__(...func_get_args());
}
Als eine Klassenmethode:
protected function foo($arg,$arg1,$arg3, $etc) {
$this->{__FUNCTION__}(...func_get_args());
}
https://www.php.net/manual/en/functions.arguments.php#functions.variable-arg-list
Zufälligerweise funktioniert dies immer dann, wenn Sie ein Array von Argumenten in eine Methode oder Funktion einfügen wollen...
Zum Beispiel (auch diese sind gleichwertig)
public function foo($arg,$arg1)
call_user_func_array([$this, __FUNCTION__], func_get_args());
}
call_user_func_array
sollte meiner Meinung nach veraltet sein, da es in mehrfacher Hinsicht überflüssig ist. Am offensichtlichsten ist dies für mich.
public function foo($arg,$arg1)
call_user_func([$this, __FUNCTION__], ...func_get_args());
}
のことです。 ...
ist recht nützlich (ich glaube, es funktioniert auch mit benannten Argumenten, obwohl ich das noch nicht ausprobiert habe).
5 Stimmen
Warum ist
__FUNCTION__
hässlich? Scheint ein sehr guter Weg zu sein, um zu erreichen, was Sie wollen...0 Stimmen
@Felix, weil es wahrscheinlich hinzugefügt werden muss
call_user_func
oder miteval
. Ich würde etwas vorziehen wieself::($var)
2 Stimmen
Siehe meine Antwort... Sie können variable Funktionen verwenden, um dies zu vermeiden.