Вызов конструктора из аргументов переменной с помощью PHP

У меня есть функция, которая принимает вариативные аргументы, которые я func_get_args() от func_get_args() .

Эта функция должна вызывать конструктор с этими аргументами. Однако я не знаю, как это сделать.

С помощью call_user_func вы можете вызывать функции с массивом аргументов, но как вы могли бы назвать его конструктором? Я не могу просто передать массив аргументов; он должен верить, что я назвал его «нормально».

Спасибо!

Для PHP <5.3 это непросто сделать без предварительного создания экземпляра класса с помощью call_user_func_array . Однако с Reflection это довольно тривиально:

 $reflection = new ReflectionClass( 'yourClassName' ); $instance = $reflection->newInstanceArgs( $yourArrayOfConstructorArguments ); 

Если по какой-то причине вы не можете использовать ReflectionClass::newInstanceArgs это другое решение, использующее eval ():

 function make_instance($class, $args) { $arglist = array(); $i = 0; foreach($args => &$v) { $arglist[] = $n = '_arg_'.$i++; $$n = &$v; } $arglist = '$'.implode(',$',$arglist); eval("\$obj = new $class($arglist);"); return $obj; } $instance = make_instance('yourClassName', $yourArrayOfConstructorArguments); 

Обратите внимание, что использование этой функции позволяет передавать аргументы по ссылке на конструктор, что неприемлемо для ReflectionClass::newInstanceArgs .