Heim  >  Artikel  >  Backend-Entwicklung  >  PHP ruft die aktuelle Methode auf

PHP ruft die aktuelle Methode auf

王林
王林Original
2023-05-06 12:02:07709Durchsuche

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.

  1. Eingebaute Variablen verwenden

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__

Zum Beispiel:
    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
    }
  1. Ausgabeergebnis:
  2. 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();
Im obigen Code gibt __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.
  1. Zum Beispiel:
  2. rrreee
Im obigen Code wird die myMethod-Methode in der MyClass-Klasse über die ReflectionMethod-Klasse abgerufen und der Klassenname, der Methodenname und der Parametername ausgegeben.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn