Nur aus Neugier, wann besteht Bedarf daran? Ist es möglich, Funktionen zu erstellen, deren Namen Sie nicht kennen?
DisgruntledGoat
37
Eine mögliche Verwendung wäre die Protokollierung Ihrer Ausführung. Wenn Sie schreiben "Ich hatte einen Fehler in". FUNKTION zu einer Protokolldatei oder so. Auf diese Weise müssen Sie sich bei einer Änderung des Funktionsnamens keine Sorgen machen, dass die Person daran denkt, die Protokollnachricht zu ändern.
Brian Ramsay
1
Benötigt dies für die Protokollierung! Danke, dass
du
2
Auch nützlich, wenn Sie den Funktionsnamen innerhalb der Funktion verwenden möchten (für eine andere Verwendung). Das Erstellen von Links basierend auf der Funktion usw. (z. B. function name1()verwenden Sie name1 erneut im Inneren) würde viel Zeit sparen, wenn Sie dieselbe Vorlage für viele Funktionen haben.
Mafia
1
@DisgruntledGoat: Es ist nützlich, wenn Sie Funktionen manuell erstellen und nicht für jede Funktion eine Fehlermeldung bearbeiten möchten. Wenn Sie es zur Fehlermeldung hinzufügen, haben Sie weniger Arbeit.
FUNCTION funktioniert auch für Funktionen außerhalb der Klasse. Versucht auf PHP 7.0.8.
mvsagar
Wie bekomme ich den Klassennamen?
Kiran Reddy
2
@KiranReddy Auch dafür gibt es eine magische Konstante : __CLASS__. Oder du kannst es tun get_class($this).
Sean the Bean
1
Versucht auf PHP> = 4
Nabi KAZ
98
Sie können die magischen Konstanten__METHOD__ (einschließlich des Klassennamens) oder __FUNCTION__(nur den Funktionsnamen) verwenden, je nachdem, ob es sich um eine Methode oder eine Funktion handelt ... =)
Das ist unglaublich ressourcenintensiv. Die Verwendung von FUNCTION oder METHOD ist wesentlich effizienter. debug_backtrace () ist großartig, wenn Sie mehr als nur den Funktionsnamen benötigen.
Luke Cousins
2
Es ist eine schlechte Praxis, debug_backtrace () für diesen Zweck zu verwenden
Marcio Mazzucato
1
DIES IST DER einzig richtige Weg habe ich gefunden !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!! weil __FUNCTION__gibt den Namen der übergeordneten Funktion zurück (wenn die aktuelle Funktion in der übergeordneten Funktion enthalten ist)
Während dieses Code-Snippet die Lösung sein kann, hilft das Hinzufügen einer Erklärung wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in Zukunft beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen.
function name1()
verwenden Sie name1 erneut im Inneren) würde viel Zeit sparen, wenn Sie dieselbe Vorlage für viele Funktionen haben.Antworten:
Der genaue Weg ist die Verwendung der
__FUNCTION__
vordefinierten magischen Konstante .Beispiel:
Ergebnis :
MethodA
.quelle
__CLASS__
. Oder du kannst es tunget_class($this)
.Sie können die magischen Konstanten
__METHOD__
(einschließlich des Klassennamens) oder__FUNCTION__
(nur den Funktionsnamen) verwenden, je nachdem, ob es sich um eine Methode oder eine Funktion handelt ... =)quelle
Wenn Sie PHP 5 verwenden, können Sie Folgendes versuchen:
quelle
__FUNCTION__
gibt den Namen der übergeordneten Funktion zurück (wenn die aktuelle Funktion in der übergeordneten Funktion enthalten ist)Ergebnis: "MethodA";
quelle