66 votes

Comment appeler le constructeur call_user_func_array en PHP

Comment pourrais-je appeler le constructeur d'une classe avec call_user_func_array

Il n'est pas possible de faire :

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

parce que si le constructeur a des paramètres, la nouvelle va échouer.

Contrainte : je ne contrôle pas les classes que j'ai à instancier, je ne peux pas les modifier.

Ne me demandez pas pourquoi je veux faire ce truc de fou, c'est un fou de test.

146voto

salathe Points 26305

Vous pouvez utiliser la réflexion comme:

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

Comme de PHP 5.6.0, l' ... opérateur peut également être utilisé à cette fin.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X