PHP 開発では、現在のメソッドの名前、パラメーター リスト、戻り値などの取得など、現在のメソッドに関する情報を取得する必要がある場合があります。この記事では、現在の情報を入手する方法をいくつか紹介します。
PHP には、__FUNCTION__
、 など、現在のメソッドに関する情報を取得するための組み込み変数がいくつかあります。 __メソッド__
、__クラス__
、__TRAIT__
など。このうち、 __FUNCTION__
は現在の関数の名前を取得でき、 __METHOD__
は現在のメソッド(クラス内の関数)の名前を取得でき、 __CLASS__
は現在の関数の名前を取得できます。現在のクラスの名前、__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__
は、現在の特性の名前を出力します。 __METHOD__
は、クラス名とメソッド名を含む完全なメソッド名を出力することに注意してください。
ReflectionClass と ReflectionMethod は、クラスとメソッドの情報を取得するために使用できる PHP の組み込みリフレクション クラスです。 ReflectionMethod の getClassName() メソッドを使用して、現在のメソッドが存在するクラスの名前を取得します。getName() メソッドは、現在のメソッドの名前を取得できます。getParameters() メソッドは、現在のメソッドのパラメータ リストを取得できますgetReturnType() メソッドは、現在のメソッドの戻り値を取得できます。
例:
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 }
上記のコードでは、ReflectionMethodクラスを通じてMyClassクラスのmyMethodメソッドを取得し、それぞれクラス名、メソッド名、パラメータ名を出力しています。
debug_backtrace 関数は、現在の呼び出しスタックの情報を取得し、現在のメソッドの情報を取得するために使用できます。 debug_backtrace 関数によって取得される情報は配列であり、この配列にはコール スタック内のすべての関数とメソッドに関する情報が含まれるため、現在のメソッドに関する情報を見つけるには配列を走査する必要があります。
例:
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();
上記のコードでは、debug_backtrace 関数を通じてコール スタック情報が取得され、配列が走査されて myMethod メソッド情報とクラス名が検索されます。メソッド名がそれぞれ出力されます。
概要
この記事では、現在のメソッド情報を取得する 3 つの方法、つまり、組み込み変数の使用、ReflectionClass と ReflectionMethod の使用、および debug_backtrace 関数の使用を紹介します。このうち、組み込み変数を使用するのが最も簡単ですが、特定のパラメータ リストと戻り値を取得できません。ReflectionClass および ReflectionMethod を使用すると、ReflectionClass または ReflectionMethod オブジェクトをインスタンス化する必要があり、より面倒です。ただし、debug_backtrace 関数を使用すると、すべての呼び出しを取得できます。スタック情報を取得するには、配列を走査する必要があります。 現在のメソッドに関する情報を見つけるには時間がかかります。実際の開発では、現在のメソッド情報を取得するために、ニーズに応じて適切なメソッドを選択できます。
以上がphpは現在のメソッドを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。