139 votes

Variables PHP dans les fonctions anonymes

Je jouais avec des fonctions anonymes en 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 que la fonction anonyme puisse accéder au $variable ?

338voto

nickb Points 37850

Oui, utilisez une fermeture :

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

Notez que pour que vous puissiez 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 en utilisant &.

3voto

MAChitgarha Points 867

Si votre fonction est courte et unifilaire, vous pouvez utiliser des fonctions de flèche, à partir de PHP 7.4 :

$variable = "nothing";
functionName($someArgument, fn() => $variable = "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