Heim  >  Artikel  >  Datenbank  >  Analyse der PHP-Schließungsinstanz

Analyse der PHP-Schließungsinstanz

怪我咯
怪我咯Original
2017-07-11 15:52:351180Durchsuche

Anonyme Funktionen (Anonyme Funktionen), auch Abschlüsse genannt, ermöglichen das vorübergehende Erstellen einer Funktion ohne angegebenen Namen. Am häufigsten als Wert des (Callback)-Parameters der Callback-Funktion verwendet. Natürlich gibt es auch andere Anwendungen.

Anonyme Funktionen werden derzeit über die Closure-Klasse implementiert.

Abschlussfunktionen können auch als Wert von Variablen verwendet werden. PHP konvertiert diesen Ausdruck automatisch in eine Objekt-Instanz der integrierten Klasse Closure. Die Methode zum Zuweisen eines Abschlussobjekts zu einer Variablen ist dieselbe wie die Syntax der gewöhnlichen Variablenzuweisung, und am Ende wird außerdem ein Semikolon hinzugefügt:

Ein Abschluss kann sein vom übergeordneten Bereich abgerufen erbt -Variablen. Solche Variablen sollten mithilfe des Sprachkonstrukts use übergeben werden. Ab PHP 7.1 können solche Variablen nicht übergeben werden in: superglobals, $this oder haben denselben Namen wie Parameter.

Die spezifische Form ist wie folgt:

$a = function($arg1, $arg2) use ($variable) { 
// 声明函数闭包到变量$a, 参数为$arg1, $arg2 ,该闭包需使用$variable变量
}

Die spezifischen Anwendungsbeispiele sind wie folgt:

<?php
$result = 0;
 
$one = function()
{ var_dump($result); };
 
$two = function() use ($result)
{ var_dump($result); }; // 可以认为 $two这个变量 本身记录了该函数的声明以及use使用的变量的值
 
$three = function() use (&$result)
{ var_dump($result); };
 
$result++;
 
$one();  // outputs NULL: $result is not in scope
$two();  // outputs int(0): $result was copied
$three();  // outputs int(1)
?>


Das obige ist der detaillierte Inhalt vonAnalyse der PHP-Schließungsinstanz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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