PHP : Appel dynamique de fonction ou de méthode
Par Méthylbro le samedi 19 septembre 2009, 08:00 - Développement - Lien permanent
Récemment j'ai eu besoin pour l'un de mes scripts de créer une petite table de fonctions. C'est alors que j'ai eu l'idée de continuer ma petite série de billets dédiés aux concepts simple avec PHP en vous parlant de l'appel dynamique de fonctions ou de méthodes.
Imaginons que la fonction que vous souhaitez appeler est elle-même variable de quelque chose … imaginez que vous puissiez faire appel à une fonction dont le nom ne vous sera connu qu'a l'exécution. Comment faire ?
Tout simplement en utilisant cette petite astuce que sont les appels dynamique. La documentation officielle de PHP appelle ça les « fonction variables », voyons pourquoi avec cet exemple :
function bonjour() {
echo 'Hello World !';
}
$jeveuxdire = 'bonjour';
$jeveuxdire();
De la même façon qu'un appel de fonction vous pouvez utiliser des arguments comme ceci :
function parler($phrase) {
echo $phrase;
}
$jeveux = 'parler';
$dire = 'Bonjour !';
$jeveux($dire);
Avec les fonctions anonymes (closures) de PHP5.3, nous pouvons même aller plus loin :
$parler = function ($phrase) {
echo $phrase;
}
$parler('Bonjour !');
Commentaires
Pour des raisons de lisibilité, perso je préfère utiliser call_user_func_array.
Mais ça n'en reste pas une possibilité très puissante dès qu'on parle de généraliser un comportement