Как использовать рефлексию для метода? Есть массив, в нем лежат аргументы$params = ['arg1' => 10, 'arg2' => 20]; И метод, который принимает эти аргументыpublic function method($a, $b) {return $a+$b;} Для классов есть такая штука$reflection = new \ReflectionClass( $class ); $instance = $reflection->newInstanceArgs( $args ); А как с методом сделать подобное?
Для использования рефлексии для вызова метода с передачей аргументов можно использовать метод ReflectionMethod::invokeArgs(). В вашем случае, это будет выглядеть следующим образом:
class MyClass { public function method($a, $b) { return $a + $b; } } $params = ['arg1' => 10, 'arg2' => 20]; $class = new MyClass(); $reflection = new ReflectionMethod($class, 'method'); $args = []; foreach($params as $param) { $args[] = $param; } $result = $reflection->invokeArgs($class, $args); echo $result; // Выведет 30
Этот код создаст экземпляр класса MyClass, получит рефлексию метода 'method', извлечет аргументы из массива $params и передаст их в метод для выполнения.
Для использования рефлексии для вызова метода с передачей аргументов можно использовать метод ReflectionMethod::invokeArgs(). В вашем случае, это будет выглядеть следующим образом:
class MyClass {public function method($a, $b) {
return $a + $b;
}
}
$params = ['arg1' => 10, 'arg2' => 20];
$class = new MyClass();
$reflection = new ReflectionMethod($class, 'method');
$args = [];
foreach($params as $param) {
$args[] = $param;
}
$result = $reflection->invokeArgs($class, $args);
echo $result; // Выведет 30
Этот код создаст экземпляр класса MyClass, получит рефлексию метода 'method', извлечет аргументы из массива $params и передаст их в метод для выполнения.