PHP 개발에서는 때때로 현재 메서드의 이름, 매개변수 목록, 반환 값 등을 가져오는 등 현재 메서드에 대한 정보를 가져와야 할 때가 있습니다. 이 기사에서는 현재 방법에 대한 정보를 얻는 몇 가지 방법을 소개합니다.
PHP에는 __FUNCTION__
, __METHOD__
, __CLASS__, __TRAIT__
등 그 중 __FUNCTION__
은 현재 함수의 이름을 얻을 수 있고, __METHOD__
는 현재 메소드(클래스 내의 함수)의 이름을 얻을 수 있으며, __CLASS__ code>는 현재 클래스를 가져올 수 있습니다. <code>__TRAIT__
는 현재 특성의 이름을 가져올 수 있습니다. __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__
는 현재 함수의 이름인 myMethod
, __METHOD__
를 출력합니다. > 현재 메소드의 이름을 출력합니다. MyClass::myMethod
, __CLASS__
는 현재 클래스의 이름을 출력합니다. MyClass
, __TRAIT__ code>는 현재 특성의 이름을 출력합니다. <code>__METHOD__
는 클래스 이름과 메서드 이름을 포함하여 전체 메서드 이름을 출력한다는 점에 유의하세요.
ReflectionClass 및 ReflectionMethod 사용
ReflectionClass 및 ReflectionMethod는 클래스 및 메서드 정보를 얻는 데 사용할 수 있는 PHP의 내장 리플렉션 클래스입니다. ReflectionMethod의 getClassName() 메소드를 사용하면 현재 메소드가 위치한 클래스의 이름을 얻을 수 있습니다. getName() 메소드는 현재 메소드의 매개변수 목록을 가져올 수 있습니다. . getReturnType() 메서드는 현재 메서드 유형의 반환 값을 가져올 수 있습니다.debug_backtrace 함수 사용
debug_backtrace 함수는 현재 호출 스택의 정보를 얻을 수 있으며 현재 메서드의 정보를 얻는 데 사용할 수 있습니다. debug_backtrace 함수를 통해 얻은 정보는 배열이며, 배열에는 호출 스택의 모든 함수와 메서드에 대한 정보가 포함되어 있으므로 현재 메서드에 대한 정보를 찾으려면 배열을 순회해야 합니다. 예:rrreee
위 코드에서는 debug_backtrace 함수를 통해 콜 스택 정보를 얻은 후 배열을 순회하여 myMethod 메서드 정보를 찾아 클래스 이름과 메서드 이름이 각각 출력됩니다. 🎜🎜요약🎜🎜이 글에서는 현재 메서드 정보를 얻는 세 가지 방법, 즉 내장 변수 사용, ReflectionClass 및 ReflectionMethod 사용, debug_backtrace 함수 사용을 소개합니다. 그중 내장 변수를 사용하는 것이 가장 간단하지만 특정 매개변수 목록과 반환 값을 가져올 수 없습니다. ReflectionClass 및 ReflectionMethod를 사용하려면 ReflectionClass 또는 ReflectionMethod 개체를 인스턴스화해야 하며, 이는 debug_backtrace 함수를 사용하여 모든 호출을 얻을 수 있지만 더 번거롭습니다. 스택 정보를 얻으려면 배열을 순회해야 합니다. 현재 메서드에 대한 정보를 찾는 데는 시간이 많이 걸립니다. 실제 개발에서는 현재 방법 정보를 얻기 위해 필요에 따라 적절한 방법을 선택할 수 있습니다. 🎜위 내용은 PHP는 현재 메소드를 호출합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!