Erläuterung des Unterschieds zwischen dem PHP-Abschluss, der externe Variablen erhält, und der globalen Schlüsselwortdeklaration. Variables_php-Beispiel

韦小宝
Freigeben: 2023-03-17 18:50:02
Original
1403 Leute haben es durchsucht

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'
Nach dem Login kopieren


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'
Nach dem Login kopieren


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()
/*
Nach dem Login kopieren


Ausgabe

erfordert


a: world
Notice: Undefined variable: global in xxxxxxx on line xx
*/
Nach dem Login kopieren


Ä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 = &#39;hello&#39;;
$fun = function(){
  global $global;
  $global =&#39;world&#39;;
  echo &#39;a:&#39;.$global."\n";
};
$bbb = function()use($global){
  $global = &#39;china&#39;;
  echo &#39;c:&#39;.$global."\n";
};
$fun();
echo &#39;b:&#39;.$global."\n";
$bbb();
echo &#39;d:&#39;.$global;
Nach dem Login kopieren


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
Nach dem Login kopieren


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(&#39;butter&#39;, 1);
$my_cart->add(&#39;milk&#39;, 3);
$my_cart->add(&#39;eggs&#39;, 6);
print $my_cart->getTotal(0.05) . "\n";
Nach dem Login kopieren


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

PHP-Verschlusssyntaxstudie 1

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage