web-dev-qa-db-fra.com

PHP variables dans les fonctions anonymes

Je jouais avec des fonctions anonymes dans PHP et j'ai réalisé qu'elles ne semblaient pas atteindre des variables en dehors d'elles. Y a-t-il un moyen de contourner ce problème?

Exemple:

$variable = "nothing";

functionName(someArgument, function() {
  $variable = "something";
});

echo $variable;  //output: "nothing"

Cela ne produira "rien". Existe-t-il un moyen pour la fonction anonyme d'accéder à $variable?

101
einord

Oui, tilisez une fermeture :

functionName(someArgument, function() use( &$variable) {
  $variable = "something";
});

Notez que pour pouvoir modifier $variable et récupérer la valeur modifiée en dehors de la portée de la fonction anonyme, elle doit être référencée dans la fermeture à l'aide de &.

236
nickb