php - appelle une fonction dynamiquement
Est-il possible d'appeler une fonction par le biais de variables?
Par exemple, je tiens à appeler la fonction Login(). Puis-je faire cela:
$varFunction = "Login"; //to call the function
Puis-je utiliser $varFunction?
source d'informationauteur nuttynibbles | 2011-01-10
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez:
Ou:
Assurer que vous validez $varFunction pour les entrées malveillantes.
edit:
De vos modules, pensez à quelque chose comme ceci (en fonction de vos besoins réels):
Et ensuite appeler runModuleMain() avec le module correct instance.
Vous pouvez utiliser...
...et il va sans dire, pour s'assurer que la variable est de confiance.
J'ai réussi à appeler la fonction comme suit:
Il fonctionne avec PHP 5.3.0+
Je travaille aussi dans Laravel.
Vous devriez vraiment envisager d'utiliser des classes pour les modules, car cela vous permettra à la fois de la cohérence de la structure de code et de garder les noms de méthode identique pour plusieurs modules. Cela permettra également de vous donner la flexibilité d'hériter ou de changer le code pour chaque module.
Sur le sujet, autre que l'appel à des méthodes comme indiqué ci-dessus (qui est, à l'aide de variables comme les noms de fonction, ou call_user_func_* les fonctions de la famille), à partir de PHP 5.3, vous pouvez utiliser fermetures dynamique, les fonctions anonymes, qui pourrait vous fournir un autre moyen de faire ce que vous voulez.