2011-01-02 1 views
3

Das war unglaublich überraschend zu sehen, dass PHP keine offensichtlich Funktion hat zu tun, was ich suche, also werde ich hier fragen.PHP: Get Argument Zählung

Wie würden Sie gehen über die Anzahl der Argumente immer eine bestimmte Funktion außerhalb der Funktion hat (wie func_num_args nur von außerhalb der Funktion).

Die Lösung kann nicht wirklich die Funktion ausführen (das wäre der Zweck werden besiegen), und ich möchte es (vorzugsweise) ohne jede Art von Reflexionsklasse zu tun.

Möglich?

Antwort

8

Oh, können Sie die ReflectionFunction-Klasse verwenden, die von ReflectionFunctionAbstract erbt, die die getNumberOfParameters Funktion definiert:

$func_reflection = new ReflectionFunction('function_name'); 
$num_of_params = $func_reflection->getNumberOfParameters(); 

Hinweis: Dies wird nur auf Benutzerfunktionen arbeiten, nicht Klasse oder Instanz Funktionen.

+0

So, jetzt ist meine Sorge Kosten: Ist die Reflexionsklasse teuer? – Qix

+0

@ Di-Oxide, ich denke es ist, aber welche Wahl hast du? –

+1

@Jacob Relkin, wahr ... Ich kann eine manuelle Alternative für meine Lösung machen, anstatt es dynamisch zu versuchen. Für die Frage ist Ihre Antwort eine gültige Lösung. Danke für die Hilfe! – Qix