Как вызвать конструктор с помощью call_user_func_array в PHP

Как я могу вызвать конструктор класса с помощью call_user_func_array

Это невозможно сделать:

$obj = new $class(); call_user_func_array(array($obj, '__construct'), $args); 

потому что, если конструктор имеет параметры, новый будет терпеть неудачу.

Ограничение: я не контролирую классы, которые я должен создать, и не могу их изменять.

Не спрашивайте меня, почему я хочу сделать эту сумасшедшую вещь, это сумасшедший тест.

Вы можете использовать отражение, например:

 $reflect = new ReflectionClass($class); $instance = $reflect->newInstanceArgs($args); 

Начиная с PHP 5.6.0, оператор ... также может быть использован для этой цели.

 $instance = new $class(...$args); 

 if(version_compare(PHP_VERSION, '5.6.0', '>=')){ $instance = new $class(...$args); } else { $reflect = new ReflectionClass($class); $instance = $reflect->newInstanceArgs($args); }