Accès aux variables de portée globale dans les fonctions anonymes
En PHP, les fonctions anonymes héritent généralement de la portée locale de la fonction englobante ou de la portée globale si défini en dehors de toute fonction. Cependant, lorsque vous tentez de modifier une variable de portée globale à partir d'une fonction anonyme, vous pouvez rencontrer des problèmes.
Modification de variables de portée globale
Considérez l'exemple suivant :
$variable = "nothing"; functionName($someArgument, function() { $variable = "something"; }); echo $variable; // Output: "nothing"
Malgré la tentative de modification de $variable dans la fonction anonyme, le résultat reste "rien". En effet, les fonctions anonymes créent leur propre portée et n'héritent pas directement de la portée globale.
Solution : fermetures
Pour résoudre cette limitation, vous pouvez utiliser des fermetures. Les fermetures vous permettent de capturer des variables de la portée englobante dans une nouvelle portée. Pour modifier une variable de portée globale à partir d'une fonction anonyme, utilisez la syntaxe suivante :
functionName($someArgument, function() use (&$variable) { $variable = "something"; });
En ajoutant use avant le nom de la variable et en la référençant avec &, vous créez une fermeture qui capture la variable par référence, permettant la modification au sein de la fonction anonyme.
Conclusion
L'utilisation des fermetures vous permet d'accéder et de modifier globalement variables de portée à partir de fonctions anonymes, surmontant la limitation de la création d'une nouvelle portée au sein d'une fonction anonyme. En capturant la variable par référence, vous pouvez effectuer des modifications qui persisteront en dehors de la portée 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!