Lorsque l'on utilise une gestion modulaire (par exemple un système de Factory), et que l'on charge dynamiquement les classes, il est plutôt usuel de leur passer en paramètre un tableu de configuration :
return new $className($config);
Seulement, il arrive peut-être des fois où l'on veut intégrer une classe déjà existante que, elle, prends quelques paramètres. Il n'est certes pas difficile du tout de réécrire le bout de code faisant en sorte que le tout soit géré dans un array, mais je pense qu'il est globalement mieux d'avoir une liste de paramètres. D'autant plus que celà oblige à passer le nombre exact de paramètres, sinon PHP renvoie une erreur. Avec un array, il faut nous même gêrer ça... Et comme les informaticiens programment plus pour en faire le moins possible après, je pense que ce code a sa place ici :)
Pour ceux qui ne connaissent pas, voici deux liens :
http://en.wikipedia.org/wiki/Reflection_%28compu ter_science%29 (ou http://fr.wikipedia.org/wiki/R%C3%A9flexion_%28inf ormatique%29 , mais moins complet ... )
http://php.net/reflection
Pour faire simple, la réflection, c'est la capacité d'un programme à analyser son état, où à se modifier lui-même.
Il est par exemple possible, en javascript, de modifier le comportemt d'une fonction :
http://en.wikipedia.org/wiki/Self-modifying_code #Example_JavaScript_self-modifying_code
Bref, il n'est pas question ici de modifier le comportement d'une fonction ( il existe d'ailleurs runkit pour ça pour le moment [Même si ça ne vaut pas la réflexion] : http://php.net/runkit ), mais tout simplement de faire appel à une fonction de l'API de réflexion pour instancier notre classe.
Voir le code ci-dessous.