【PHP8.x】ReflectionMethod::invokeArgs()メソッドの使い方
invokeArgsメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
invokeArgsメソッドは、ReflectionMethodクラスのインスタンスが表すメソッドを、プログラムの実行中に動的に呼び出すメソッドです。
このメソッドは、以下の二つの引数を受け取り、指定されたメソッドを実行します。 一つ目の引数には、メソッドを呼び出す対象となるオブジェクトのインスタンスを指定します。もし呼び出すメソッドが静的なものである場合は、この引数にnullを渡してください。 二つ目の引数には、対象のメソッドに渡す引数を、その順序通りに格納した配列を指定します。この配列の各要素が、呼び出されるメソッドの対応する引数としてそれぞれ渡されます。
invokeArgsメソッドを実行すると、対象のメソッドが指定された引数で呼び出され、そのメソッドが返す結果が、invokeArgsメソッドの戻り値として返されます。
この機能は、呼び出すメソッドの名前や、そのメソッドに渡す引数の具体的な値がプログラムの実行時まで確定しない場合、あるいは外部からの情報に基づいて柔軟にメソッドを実行したい場合に特に有用です。例えば、アプリケーションフレームワークが、ユーザーが定義した特定の処理を動的に呼び出す場面などで活用されます。
構文(syntax)
1<?php 2 3class MyClass 4{ 5 public function myMethod(string $param1, int $param2): string 6 { 7 return "Received: " . $param1 . " and " . $param2; 8 } 9} 10 11$object = new MyClass(); 12$reflectionMethod = new ReflectionMethod($object, 'myMethod'); 13$args = ['Hello', 123]; 14 15$result = $reflectionMethod->invokeArgs($object, $args); 16 17?>
引数(parameters)
?object $object, array $args
- ?object $object: メソッドを呼び出す対象のオブジェクト。
nullを指定すると、静的メソッドとして呼び出されます。 - array $args: メソッドに渡す引数の配列。配列のキーは引数名、値は引数の値になります。
戻り値(return)
mixed
指定されたReflectionMethodオブジェクトが表すメソッドを実行し、その実行結果を返します。