Création de sites web en éco-conception

12/04/2013 Passer un tableau en guise d'arguments d'une fonction PHP

En travaillant sur un script de filtrage, j'ai été confronté à un cas intéressant. Le système doit lancer une fonction dont il connaît le nom (stocké une variable $nomFonction) et dont il possède les arguments (stockés dans une variable $arguments).

function fonctionTest($a,$b) { return $a.",".$b; } $nomFonction="fonctionTest"; $arguments=array("first","second");

Hors de question d'essayer un $fonctionTest($arguments) ... $arguments serait bien récupéré, mais dans la variable $a, quant à $b, délaissée, elle générerait une erreur Missing argument 2 for fonctionTest().

La fonction call_user_func() n'est pas plus utile, car notre problème, c'est qu'on ignore le nombre d'arguments attendus par la fonction de rappel.

Mais on chauffe... PHP possède une variante nommée call_user_func_array() et qui permet - pour copier-coller le titre de ce billet - de "passer un tableau en guise d'arguments d'une fonction PHP".

echo call_user_func_array( $nomFonction, $tableauArguments ); // affichera "first,second"

Commentaires

Ajouter un commentaire :