129 votes

Fonction de passage en tant que paramètre en PHP

Je me demandais s'il est possible ou non de passer une fonction en paramètre en PHP; Je veux quelque chose comme quand vous programmez dans JS:

 object.exampleMethod(function(){
    // some stuff to execute
});
 

Ce que je veux, c'est exécuter cette fonction quelque part dans exampleMethod. Est-ce possible en PHP?

179voto

zombat Points 46702

C'est possible si vous utilisez PHP 5.3.0 ou supérieur.

Voir Fonctions anonymes dans le manuel.

Dans votre cas, vous définiriez exampleMethod comme ceci:

 function exampleMethod($anonFunc) {
    //execute anonymous function
    $anonFunc();
}
 

64voto

webbiedave Points 28781

Juste pour ajouter aux autres, vous pouvez passer un nom de fonction:

 function someFunc($a)
{
    echo $a;
}

function callFunc($name)
{
    $name('funky!');
}

callFunc('someFunc');
 

Cela fonctionnera en PHP4.

21voto

Jage Points 4889

Vous pouvez également utiliser create_function pour créer une fonction en tant que variable et la transmettre. Cependant, j'aime mieux le sentiment de fonctions anonymes . Allez zombat.

15voto

Il suffit de le coder comme ceci:

 function example($anon) {
  $anon();
}

example(function(){
  // some codes here
});
 

ce serait génial si vous pouviez inventer quelque chose comme ceci (inspiré par Laravel Illuminate):

 Object::method("param_1", function($param){
  $param->something();
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X