Как вызвать конструктор с вызовом пользовательского массива func в PHP
Как я могу вызвать конструктор класса с call_user_func_array
это невозможно сделать:
$obj = new $class();
call_user_func_array(array($obj, '__construct'), $args);
потому что если конструктор имеет параметры, то новая не удастся.
ограничение: я не контролирую классы, которые я должен создать, и не могу их изменить.
Не спрашивайте меня, почему я хочу сделать это безумие, это сумасшедший тест.
1 ответ:
можно использовать отражение как:
$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); }