Heim > Artikel > Backend-Entwicklung > PHP ruft die aktuelle Methode auf
Bei der PHP-Entwicklung müssen wir manchmal Informationen über die aktuelle Methode abrufen, z. B. den Namen der aktuellen Methode, die Parameterliste, den Rückgabewert usw. In diesem Artikel werden einige Methoden vorgestellt, um Informationen über die aktuelle Methode zu erhalten.
PHP verfügt über einige eingebaute Variablen, um Informationen über die aktuelle Methode zu erhalten, darunter __FUNCTION__
, __METHOD__
, __CLASS__, __TRAIT__
usw. Unter diesen kann __FUNCTION__
den Namen der aktuellen Funktion abrufen, __METHOD__
kann den Namen der aktuellen Methode (Funktion in der Klasse) abrufen und __CLASS__ code> kann die aktuelle Klasse abrufen. <code>__TRAIT__
kann den Namen des aktuellen Merkmals abrufen. __FUNCTION__
、__METHOD__
、__CLASS__
、__TRAIT__
等。其中,__FUNCTION__
可以获取当前函数的名称,__METHOD__
可以获取当前方法(类中的函数)的名称,__CLASS__
可以获取当前类的名称,__TRAIT__
可以获取当前 trait 的名称。
举个例子:
class MyClass { public function myMethod() { echo __FUNCTION__ . "\n"; echo __METHOD__ . "\n"; echo __CLASS__ . "\n"; echo __TRAIT__ . "\n"; } } $myInstance = new MyClass(); $myInstance->myMethod();
输出结果:
myMethod MyClass::myMethod MyClass
上述代码中,__FUNCTION__
输出了当前函数的名称 myMethod
,__METHOD__
输出了当前方法的名称 MyClass::myMethod
,__CLASS__
输出了当前类的名称 MyClass
,__TRAIT__
输出了当前 trait 的名称。需要注意的是,__METHOD__
class MyClass { public function myMethod($param1, $param2) { // do something } } $myInstance = new MyClass(); $reflectMethod = new ReflectionMethod($myInstance, 'myMethod'); echo $reflectMethod->getClassName() . "\n"; // 输出 MyClass echo $reflectMethod->getName() . "\n"; // 输出 myMethod $params = $reflectMethod->getParameters(); foreach ($params as $param) { echo $param->getName() . "\n"; // 输出 param1 和 param2 }
class MyClass { public function myMethod() { $trace = debug_backtrace(); foreach ($trace as $traceItem) { if ($traceItem['function'] == 'myMethod') { echo $traceItem['class'] . "\n"; // 输出 MyClass echo $traceItem['function'] . "\n"; // 输出 myMethod break; } } } } $myInstance = new MyClass(); $myInstance->myMethod();
__FUNCTION__
den Namen der aktuellen Funktion myMethod
, __METHOD__
aus > Gibt den Namen der aktuellen Methode aus MyClass::myMethod
, __CLASS__
gibt den Namen der aktuellen Klasse aus MyClass
, __TRAIT__ code> gibt den Namen des aktuellen Merkmals aus. Es ist zu beachten, dass <code>__METHOD__
den vollständigen Methodennamen ausgibt, einschließlich des Klassennamens und des Methodennamens.
Verwenden Sie ReflectionClass und ReflectionMethod
ReflectionClass und ReflectionMethod sind die in PHP integrierten Reflexionsklassen, die zum Abrufen von Klassen- und Methodeninformationen verwendet werden können. Verwenden Sie die Methode getClassName() von ReflectionMethod, um den Namen der Klasse abzurufen, in der sich die aktuelle Methode befindet. Die Methode getName() kann den Namen der aktuellen Methode abrufen . Die Methode getReturnType() kann den Rückgabewert des aktuellen Typs abrufen.Verwenden Sie die Funktion debug_backtrace
Die Funktion debug_backtrace kann die Informationen des aktuellen Aufrufstapels abrufen und kann zum Abrufen der Informationen der aktuellen Methode verwendet werden. Die über die Funktion debug_backtrace erhaltenen Informationen sind ein Array. Das Array enthält Informationen zu allen Funktionen und Methoden im Aufrufstapel. Sie müssen also das Array durchlaufen, um die Informationen zur aktuellen Methode zu finden. Zum Beispiel:rrreee
Im obigen Code werden die Aufrufstapelinformationen über die Funktion debug_backtrace abgerufen. Anschließend wird das Array durchlaufen, um die Methodeninformationen von myMethod zu finden, und der Klassenname bzw. der Methodenname werden ausgegeben. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel werden drei Methoden zum Abrufen aktueller Methodeninformationen vorgestellt, nämlich die Verwendung integrierter Variablen, die Verwendung von ReflectionClass und ReflectionMethod sowie die Verwendung der Funktion debug_backtrace. Unter diesen ist die Verwendung integrierter Variablen die einfachste, aber Sie können die spezifische Parameterliste und den Rückgabewert nicht abrufen, indem Sie das ReflectionClass- oder ReflectionMethod-Objekt instanziieren, was umständlicher ist, obwohl die Verwendung der Funktion debug_backtrace alle Aufrufe abrufen kann Stapelinformationen müssen das Array durchlaufen. Das Finden von Informationen über die aktuelle Methode ist zeitaufwändig. In der tatsächlichen Entwicklung können Sie die geeignete Methode entsprechend Ihren Anforderungen auswählen, um die aktuellen Methodeninformationen zu erhalten. 🎜Das obige ist der detaillierte Inhalt vonPHP ruft die aktuelle Methode auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!