Maison > Article > développement back-end > Explication détaillée des fonctions de fermeture et des problèmes courants en PHP
Explication détaillée des fonctions de fermeture et des problèmes courants en PHP
En PHP, la fonction de fermeture est un type de fonction spécial qui permet de transmettre et de renvoyer des fonctions en tant que paramètres, et peut accéder à des variables externes à l'intérieur une fonction. Dans cet article, nous examinerons de plus près les fonctions de fermeture en PHP et leurs problèmes courants.
Une fonction de fermeture est une fonction anonyme qui peut accéder à des variables dans le cadre de sa définition. Habituellement, la portée d'une définition de fonction est limitée à la fonction elle-même, mais une fonction de fermeture peut accéder aux variables contenues dans la portée de la définition, et ces variables sont toujours accessibles même une fois l'exécution de la fonction terminée.
La syntaxe de la fonction de fermeture est la suivante :
$func = function($args) use ($vars) { // ... };
Parmi eux, $func est une référence à la fonction de fermeture, $args est le paramètre passé à la fonction de fermeture , et $vars sont des variables auxquelles il faut accéder dans la fonction de fermeture. Le mot-clé use est utilisé pour définir les variables externes auxquelles la fonction de fermeture doit accéder.
Les fonctions de fermeture sont généralement utilisées dans les scénarios suivants :
$foo = 1; $bar = function() { echo $foo; }; $bar(); // Output: Notice: Undefined variable: fooIci, $foo est une variable définie en dehors de la fonction de fermeture, et une erreur sera signalée lors d'un accès dans la fonction de fermeture. Afin d'accéder aux variables externes dans une fonction de fermeture, la variable doit être transmise à la fonction de fermeture à l'aide du mot-clé use :
$foo = 1; $bar = function() use($foo) { echo $foo; }; $bar(); // Output: 1Lorsque vous utilisez le mot-clé use pour transmettre des variables externes à la fonction de fermeture, la variable peut être transmis par valeur ou par référence. Par défaut, les variables sont passées par valeur, c'est-à-dire que la modification de la valeur de la variable dans la fonction de fermeture n'affectera pas la variable externe. Si vous devez passer par référence, vous pouvez utiliser le symbole & :
$foo = 1; $bar = function() use(&$foo) { $foo++; }; $bar(); echo $foo; // Output: 2
class Foo { protected $bar = 'baz'; public function hello() { $callback = function() { echo $this->bar; }; $callback(); } } $foo = new Foo(); $foo->hello(); // Output: baz
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!