Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Variablenbereich und globale Variablen (grafisches Tutorial)

PHP-Variablenbereich und globale Variablen (grafisches Tutorial)

亚连
Freigeben: 2023-03-26 10:38:02
Original
1851 Leute haben es durchsucht

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 = &#39;hello,world&#39;;
     abc(); //这里什么都不输出,因为访问不到$test变量
    function abc(){            echo($test);
    }?>
Nach dem Login kopieren

global und $GLOBALS[]

Wir können das Schlüsselwort global verwenden, um Variablen zu deklarieren. Das obige Beispiel sieht so aus

$test = &#39;hello,world&#39;;
     abc(); 
    function abc(){        global $test;            echo $test;
    }
Nach dem Login kopieren

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 = &#39;hello,world&#39;;    function abc(){        echo $GLOBALS[&#39;test&#39;];
    }
    abc();
Nach dem Login kopieren

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[&#39;v3&#39;] =& $GLOBALS[&#39;v1&#39;]; 
} 
$v1 = 1; 
$v2 = $v3 = 0; 
test1(); 
echo $v2 ."\n"; 
test2(); 
echo $v3 ."\n";
Nach dem Login kopieren

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

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(&#39;name&#39; => &#39;gbw&#39;);$test2 = function () use($ob){
    var_dump($ob);
};$test2();
Nach dem Login kopieren

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:

Ein Trick, die Verwendung und der Unterschied in der Schließungsfunktion in PHP sowie die Bedeutung von & Referenz werden für Sie ausführlich beantwortet

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!

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