Maison >développement back-end >tutoriel php >Comment puis-je modifier des variables globales à partir de fonctions anonymes en PHP ?

Comment puis-je modifier des variables globales à partir de fonctions anonymes en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-13 05:30:021014parcourir

How Can I Modify Global Variables from Within Anonymous Functions in PHP?

Accès aux variables globales dans les fonctions anonymes

En PHP, les fonctions anonymes n'ont intrinsèquement pas accès aux variables globales. Cela peut poser des problèmes lorsque vous tentez de manipuler des variables externes à partir de ces fonctions anonymes.

Exemple :

Considérez le code suivant :

$variable = "nothing";

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

Lors de l'exécution de ce code, la variable $ reste "rien" car la fonction anonyme ne peut pas accéder à la portée globale.

Solution : Fermetures

Pour résoudre ce problème, PHP introduit le concept de fermetures. Les fermetures permettent la manipulation de variables à partir d'une portée englobante au sein d'une fonction anonyme. Pour créer une fermeture, ajoutez le mot-clé use à la déclaration de fonction anonyme :

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

Dans ce cas, le mot-clé use est accompagné d'une esperluette (&), indiquant que la variable $variable sera passée par référence. Cela permet à la fonction anonyme de modifier la variable $ globale.

Remarque : Il est essentiel d'utiliser l'esperluette (&) lors du référencement de variables dans une fermeture pour garantir que la variable globale est modifiée. , et les modifications sont reflétées en dehors de la fonction anonyme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn