Класс ReflectionFunction

marmota

Новичок
Добрый день.

Необходимо вызвать метод invoke() объекта класса ReflectionFunction, передав ему заранее неизвестное число параметров, хранящихся в массиве. При попытке использовать call_user_func_array вылазит ошибка Non-static method ReflectionFunction::testFunc() cannot be called statically. Подскажите, пожалуйста, как решить задачу.
PHP:
<?php

function testFunc($str)
{
    echo $str;
}

$funcName = 'testFunc';
$str = 'Hello, world!';

$func = new ReflectionFunction($funcName);

//
// Вызов метода invoke напрямую работает: 
// $func->invoke($str);
// В результате корректно выполняется testFunc('Hello world!');
//

// А здесь вылазит ошибка
call_user_func(array($func, 'invoke'), $str);

?>
 

marmota

Новичок
Сейчас заметил, что в качестве параметра передал не массив, а строку. Суть вопроса это не меняет.
 

Splurov

Новичок
PHP:
<?php

error_reporting(E_ALL);
ini_set('display_errors', 'on');

function test() {
	$args = func_get_args();
	var_dump($args);
}

$func = new ReflectionFunction('test');

call_user_func_array(array($func, 'invoke'), array(1, 2, 3));
Вывод:
PHP:
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Никаких ошибок.
 

marmota

Новичок
Странно, у меня Ваш код вызывает:
Fatal error: Non-static method ReflectionFunction::test() cannot be called statically in Z:\home\test\www\quest.php on line 14

Все равно, спасибо!
 
Сверху