Abschluss ist ein gängiges Konzept. Wir können es normalerweise mit der Rückruffunktion verwenden, um den Code prägnanter und lesbarer zu machen. In diesem Artikel wird hauptsächlich der Unterschied zwischen PHP Closure zum Abrufen externer Variablen und dem globalen Schlüsselwort zum Deklarieren von Variablen vorgestellt. Werfen wir einen Blick auf diesen Artikel über PHP Closure zum Abrufen externer Variablen !
Als ich kürzlich Workerman lernte, kam ich aufgrund der unterschiedlichen Verwendungsmöglichkeiten von Workern häufiger mit Callback-Funktionen in Kontakt Eine Zusammenfassung ermittelt den Unterschied zwischen externen Variablen und mit dem globalen Schlüsselwort deklarierten Variablen.
Schließung
Schließung ist ein gängiges Konzept. Wir können es normalerweise mit Rückruffunktionen verwenden, um den Code prägnanter und einfacher zu lesen.
Abschlüsse ermöglichen es Funktionen, Variablen im übergeordneten Bereich durch Kopieren zu verwenden. Beispiel:
$global = 'hello'; $bbb = function()use($global){ echo $global."\n"; }; $bbb(); //输出 'hello'
globales Schlüsselwort deklariert Variablen
Das Deklarieren von Variablen über global kann auch dazu führen, dass der Funktionskörper Variablen außerhalb der Funktion aufruft, aber global unterscheidet sich von der Verwendung. Das Schlüsselwort global erstellt eine Referenz mit demselben Namen wie die externe Variable und verweist auf diese Die vorgenommenen Änderungen wirken sich auch auf externe Variablen aus.
$global = 'hello'; $fun = function(){ global $global; $global =' world'; echo $global."\n"; }; $fun(); // 输出 'world'
Dadurch wird lediglich eine Referenz mit demselben Namen erstellt und der Gültigkeitsbereich der ursprünglichen externen Variablen $global nicht geändert. Das heißt, es wird gesagt, dass der Aufruf dieser Funktion von einer anderen Funktion immer noch die Deklaration oder Verwendung eines Abschlusses
$global = 'hello'; $fun = function(){ global $global; $global =' world'; echo 'a:'.$global."\n"; }; $ccc = function(){ echo 'b:'.$global; }; $fun() $ccc() /*
Ausgabe
erforderta: world Notice: Undefined variable: global in xxxxxxx on line xx */
Ändern Sie den Code leicht, damit Sie den Unterschied zwischen der Schließung und der globalen Schlüsselwortdeklaration von Variablen, von denen es zwei gibt, leichter vergleichen können Möglichkeiten, auf externe Variablen zuzugreifen.
<?php $global = 'hello'; $fun = function(){ global $global; $global ='world'; echo 'a:'.$global."\n"; }; $bbb = function()use($global){ $global = 'china'; echo 'c:'.$global."\n"; }; $fun(); echo 'b:'.$global."\n"; $bbb(); echo 'd:'.$global;
Aus den beiden Ausgängen b und d hier ist ersichtlich, dass global den Wert der externen Variablen ändert, und die Verschlussmethode Nicht wirklich.
Ausgabe:
a: world b: world c:china d: world
Abschließend werde ich eine klassischere Verwendung von Anonymität veröffentlichen offizielle Dokumente Beispiele für Funktionen , Schließungen und Callback-Funktionen:
class Cart { const PRICE_BUTTER = 1.00; const PRICE_MILK = 3.00; const PRICE_EGGS = 6.95; protected $products = array(); public function add($product, $quantity) { $this->products[$product] = $quantity; } public function getQuantity($product) { return isset($this->products[$product]) ? $this->products[$product] : FALSE; } public function getTotal($tax) { $total = 0.00; $callback = function ($quantity, $product) use ($tax, &$total) { $pricePerItem = constant(CLASS . "::PRICE_" . strtoupper($product)); $total += ($pricePerItem * $quantity) * ($tax + 1.0); }; array_walk($this->products, $callback); return round($total, 2); } } $my_cart = new Cart; $my_cart->add('butter', 1); $my_cart->add('milk', 3); $my_cart->add('eggs', 6); print $my_cart->getTotal(0.05) . "\n";
Zusammenfassung
Das Obige ist die Einführung des Herausgebers in den Unterschied zwischen PHP-Verschlüssen zum Abrufen externer Variablen und dem globalen Schlüsselwort zum Deklarieren von Variablen. Wenn Sie Fragen haben, helfen wir Ihnen gerne weiter Sie können im Community-Q&A auf dieser Website Fragen stellen!
Verwandte Empfehlungen:
Anleitungen zur praktischen Anwendung von PHP-Abschlussfunktionen
Was sind PHP-Verschlüsse? Ausführliche Erläuterung der Beispiele für die Verwendung von Schließungen
Das obige ist der detaillierte Inhalt vonErläuterung des Unterschieds zwischen dem PHP-Abschluss, der externe Variablen erhält, und der globalen Schlüsselwortdeklaration. Variables_php-Beispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!