Как я мог вызвать конструктора класса с 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);
}