Heim > Artikel > Backend-Entwicklung > PHP-Variablenbereich und globale Variablen (grafisches Tutorial)
Als skriptinterpretierte Sprache hat PHP die Eigenschaften schwacher Variablen und die Eigenschaften, Ressourcen nach der Ausführung freizugeben. Die starke Hinzufügung von PHP7 hat einen starken Wirbelsturm unter den Back-End-Sprachen ausgelöst. Okay, da ich dem Variablenbereich normalerweise nicht viel Aufmerksamkeit schenke, kann das Schreiben dieses Artikels als Selbsterinnerung betrachtet werden.
Als interpretierte Sprache für Skripte verfügt HP über die Eigenschaften schwacher Variablen und die Fähigkeit, Ressourcen nach der Ausführung freizugeben. Die starke Hinzufügung von PHP7 hat bei den Back-End-Sprachen für Aufsehen gesorgt . Ein starker Wirbelsturm. Nun, da ich dem Umfang von Variablen normalerweise nicht viel Aufmerksamkeit schenke, kann das Schreiben dieses Artikels als Selbsterinnerung betrachtet werden.
Die grammatikalischen Funktionen von PHP ähneln auch denen von C++. Darüber hinaus erleichtern globale Variablen wie $_POST und $FILE sowie magische Variablen wie construction() und destruct() die Entwicklung.
Aber manche Leute sind nicht an den Variablenbereich in PHP gewöhnt. In PHP sind Funktionsvariablen und die globale Welt völlig isoliert, das heißt, sie können nicht aufeinander zugreifen.
<?php $test = 'hello,world'; abc(); //这里什么都不输出,因为访问不到$test变量 function abc(){ echo($test); }?>
global und $GLOBALS[]
Wir können das Schlüsselwort global verwenden, um Variablen zu deklarieren. Das obige Beispiel sieht so aus
$test = 'hello,world'; abc(); function abc(){ global $test; echo $test; }
Das ist alles, im zweiten Weg Der Zugriff auf Variablen im globalen Bereich erfolgt über die Verwendung eines speziellen, von PHP benutzerdefinierten $GLOBALS-Arrays. Das vorherige Beispiel kann wie folgt geschrieben werden:
$test = 'hello,world'; function abc(){ echo $GLOBALS['test']; } abc();
Ich dachte ursprünglich, dass global und $GLOBALS bis auf die unterschiedlichen Schreibmethoden gleich seien. In praktischen Anwendungen stellte ich jedoch fest, dass der Unterschied zwischen den beiden immer noch sehr groß ist groß! Schauen Sie sich dieses Beispiel an:
function test1() { global $v1, $v2; $v2 =& $v1; } function test2() { $GLOBALS['v3'] =& $GLOBALS['v1']; } $v1 = 1; $v2 = $v3 = 0; test1(); echo $v2 ."\n"; test2(); echo $v3 ."\n";
Warum ist das:
Das Ergebnis
sollte nicht zwei Fünfer sein? Wir sehen uns ein Beispiel an
function test() { global $a; unset($a); } $a = 1; test(); echo $a;
Das Ergebnis
ist offensichtlich nicht festgelegt, warum wird es trotzdem gedruckt?
Wie wir alle wissen, ist unsere Funktion immer eine private Variable. Sie setzt einen globalen Wert zurück und global generiert eine Aliasvariable in der Funktion, die auf die externe Variable der Funktion verweist, nicht auf die reale Funktion. Externe Variablen; $GLOBALS[] wird tatsächlich als externe Variable bezeichnet und ist innerhalb und außerhalb der Funktion immer konsistent!
use()
Glauben Sie, dass Ihr Verständnis von use() immer noch die Verwendung von Namespace ist? PHP-Namespace unterstützt zwei Arten der Verwendung von Aliasen oder Importen: Verwenden Sie Aliase für Klassennamen oder die Verwendung von Aliasen für Namespace-Namen. Aliase werden durch die Verwendung des -Operators implementiert.
Aber worüber wir heute sprechen, ist diese Form: function use(){}
php5.3Neue Schließungssyntax,
//普通 $a="hello,world!";$test = function () use($a){ echo $a; }; $test();//引用 对象 $ob=(object)array('name' => 'gbw');$test2 = function () use($ob){ var_dump($ob); };$test2();
PHP-Verschlussfunktionen gibt es nicht Keine große Überraschung. Tatsächlich können durch die Verwendung von CLASS ähnliche oder sogar leistungsfähigere Funktionen erreicht werden, was nicht mit js-Verschlüssen vergleichbar ist. Daher ist diese Schreibweise nicht sehr verbreitet.
Verwandte Artikel:
Detaillierte Erläuterung des PHP-Klassen- und Methodenschlüsselwort-Tutorials
Detaillierte Verwendungsmethode in der PHP-Closure-Funktion() use()
Das obige ist der detaillierte Inhalt vonPHP-Variablenbereich und globale Variablen (grafisches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!