Dans une application que je crée, j'ai besoin de passer un nombre inconnu de paramètres à un constructeur inconnu d'une classe. La classe (+ namespace) est une chaîne, c'est-à-dire dans $ class. Les paramètres sont dans un tableau.PHP: Performance: opérateur splat ou réflexion
Cette application sera déployée sur quelques mois, nous avons donc pensé pouvoir la développer en PHP 5.6. Je pensais que la solution serait:
$instance = new $class(...$args);
Cela fonctionne ...
Mais mes collègues ne veulent pas accepter cela, parce que le serveur CI ne comprend pas cette ligne de code. Leur solution serait plutôt:
$reflect = new \ReflectionClass($class);
$instance = $reflect->newInstanceArgs($args)
maintenant: les deux fonctionnent très bien, de sorte que ce n'est pas le problème. Mais ma pensée est que la réflexion est plus lente, puis en utilisant d'autres moyens (comme l'opérateur splat PHP 5.6).
Egalement la question: est-ce que la réflexion est un bon moyen, dois-je utiliser l'opérateur splat à partir du moment où le serveur CI comprend cette ligne?
Benchmark dans les deux cas. Écrivez-nous une carte postale si vous trouvez une différence significative. – deceze
classe inconnue? cela ressemble à un très mauvais design. –
Pourquoi ne pas utiliser une variable comme tableau de params? – Phantom