que - Cómo llamar al constructor con call_user_func_array en PHP
que es un constructor en php (1)
¿Cómo podría llamar al constructor de una clase con call_user_func_array
No es posible hacer:
$obj = new $class();
call_user_func_array(array($obj, ''__construct''), $args);
porque si el constructor tiene parámetros, el nuevo fallará.
Restricción: No controlo las clases que tengo que instanciar, ni puedo modificarlas.
No me preguntes por qué quiero hacer esta locura, esta es una prueba loca.
Puedes usar la reflection como:
$reflect = new ReflectionClass($class);
$instance = $reflect->newInstanceArgs($args);
A partir de PHP 5.6.0, el operador ...
también se puede utilizar para este propósito.
$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);
}