Zugriff auf global gültige Variablen innerhalb anonymer Funktionen
In PHP erben anonyme Funktionen normalerweise den lokalen Gültigkeitsbereich der umschließenden Funktion oder den globalen Gültigkeitsbereich, wenn außerhalb einer Funktion definiert. Wenn Sie jedoch versuchen, eine Variable mit globalem Gültigkeitsbereich innerhalb einer anonymen Funktion zu ändern, können Probleme auftreten.
Ändern von Variablen mit globalem Gültigkeitsbereich
Betrachten Sie das folgende Beispiel:
$variable = "nothing"; functionName($someArgument, function() { $variable = "something"; }); echo $variable; // Output: "nothing"
Trotz des Versuchs, $variable innerhalb der anonymen Funktion zu ändern, bleibt die Ausgabe „nichts“. Dies liegt daran, dass anonyme Funktionen ihren eigenen Bereich erstellen und den globalen Bereich nicht direkt erben.
Lösung: Abschlüsse
Um diese Einschränkung zu beheben, können Sie Abschlüsse verwenden. Mit Abschlüssen können Sie Variablen aus dem umschließenden Bereich in einen neuen Bereich erfassen. Um eine global gültige Variable innerhalb einer anonymen Funktion zu ändern, verwenden Sie die folgende Syntax:
functionName($someArgument, function() use (&$variable) { $variable = "something"; });
Indem Sie use vor dem Variablennamen voranstellen und mit & darauf verweisen, erstellen Sie einen Abschluss, der die Variable als Referenz erfasst. Dies ermöglicht Änderungen innerhalb der anonymen Funktion.
Fazit
Durch die Verwendung von Abschlüssen können Sie innerhalb anonymer Funktionen auf global gültige Variablen zugreifen und diese ändern, wodurch die Einschränkung beim Erstellen neuer Variablen überwunden wird Gültigkeitsbereich innerhalb einer anonymen Funktion. Indem Sie die Variable per Referenz erfassen, können Sie Änderungen vornehmen, die außerhalb des Gültigkeitsbereichs der anonymen Funktion bestehen bleiben.
Das obige ist der detaillierte Inhalt vonWie kann ich eine globale Variable innerhalb einer anonymen Funktion in PHP ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!