Как использовать рефлексию для метода? Есть массив, в нем лежат аргументы$params = ['arg1' => 10, 'arg2' => 20];
И метод, который принимает эти аргументыpublic function method($a, $b) {return $a+$b;}
Для классов есть такая штука$reflection = new \ReflectionClass( $class );
$instance = $reflection->newInstanceArgs( $args );
А как с методом сделать подобное?

21 Авг 2019 в 07:03
168 +1
0
Ответы
1

Для использования рефлексии для вызова метода с передачей аргументов можно использовать метод 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 и передаст их в метод для выполнения.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир