Accepter de fonction en tant que paramètre dans PHP
Je me demandais si il est possible ou non de passer une fonction en paramètre en PHP, je veux quelque chose comme lorsque vous êtes à la programmation en JS:
object.exampleMethod(function(){
//some stuff to execute
});
Ce que je veux, c'est l'exécution de cette fonction quelque part dans exampleMethod. Est-ce possible en PHP?
- Connexes: stackoverflow.com/questions/47502068/...
Vous devez vous connecter pour publier un commentaire.
C'est possible si vous utilisez PHP 5.3.0 ou plus.
Voir Les Fonctions Anonymes dans le manuel.
Dans votre cas, vous définissez les
exampleMethod
comme ceci:create_function
create_function()
. Ce n'est pas tout à fait la même, que vous devez passer votre fonction en tant que chaîne de code, qui est ensuiteeval()
'd les coulisses. Pas idéal, mais vous pourriez être en mesure de l'utiliser.exampleMethod(strpos);
Juste à ajouter aux autres, vous pouvez passer un nom de fonction:
En PHP4.
Vous pouvez également utiliser create_function pour créer une fonction d'une variable et le passer autour. Si, j'aime le sentiment de les fonctions anonymes mieux. Aller zombat.
Code comme ceci:
ce serait génial si tu pouvais inventer quelque chose comme ceci (inspiré par Laravel Éclairer):
Selon @zombat de réponse, il est préférable de valider les Fonctions Anonymes première:
Ou de valider le type d'argument depuis PHP 5.4.0:
La VERSION de PHP >= 5.3.0
Exemple 1: base
Exemple 2: std objet
Exemple 3: non statique de la classe appel
Exemple 4: classe statique appel
Simple exemple à l'aide d'une classe :
Testé pour PHP 5.3
Que je vois ici, Fonction Anonyme qui pourrait vous aider:
http://php.net/manual/en/functions.anonymous.php
Ce que vous aurez probablement besoin, et ce n'est pas le disais avant, c'est comment passer d'une fonction sans emballage à l'intérieur d'un sur-la-mouche-créé fonction.
Comme vous le verrez plus tard, vous aurez besoin de passer le nom de la fonction écrite dans une chaîne de caractères en paramètre, vérifiez sa "callability" et ensuite l'appeler.
La fonction de faire vérifier:
Alors à l'appeler, utilisez ce morceau de code (si vous avez besoin de paramètres aussi, mettez-les sur un tableau), voir à : http://php.net/manual/en/function.call-user-func.php
comme il suit (dans un semblable, sans paramètre, voie):
Voici une classe en expliquant la façon de faire quelque chose de similaire :
et un exemple d'utilisation