Heim  >  Artikel  >  Backend-Entwicklung  >  PHP7-Kernelanalyse 4 lokale Variablen, globale Variablen, Konstanten

PHP7-Kernelanalyse 4 lokale Variablen, globale Variablen, Konstanten

不言
不言Original
2018-04-13 14:58:262141Durchsuche

Der Inhalt dieses Artikels befasst sich mit lokalen Variablen, globalen Variablen und Konstanten der PHP7-Kernelanalyse 4. Jetzt können Freunde in Not darauf verweisen

Lokal Variablen

Lokale Variablen in PHP werden in der zend_execute_data-Struktur zugewiesen. Jedes Mal, wenn zend_op_array ausgeführt wird, werden zu Beginn der Ausführung neue zend_execute_data generiert und am Ende freigegeben Ausführung. Dies ist der Lebenszyklus der lokalen Variablen.
Lese- und Schreibvorgänge: Lokale Variablen werden über die zur Kompilierungszeit ermittelte Anzahl gelesen und geschrieben


2 Statische Variablen

Der Speicherort statischer Variablen: zend_op_array->static_variables, dies ist eine Hash-Tabelle, daher unterscheiden sich statische Variablen in PHP von gewöhnlichen lokalen Variablen. Sie werden nicht im Ausführungsbereich zend_execute_data, sondern im Hash zugewiesen Tabelle Das Formular wird in zend_op_array gespeichert. Statische Variablen werden nur einmal initialisiert. Hinweis: Ihre Initialisierung erfolgt in der Kompilierungsphase und nicht in der Ausführungsphase. Diese Funktion bedeutet auch, dass der Anfangswert einer statischen Variablen keine Variable sein kann, zum Beispiel: static $count = $xxx; Eine solche Definition meldet einen Fehler
Lese- und Schreibvorgänge: Rufen Sie zunächst den entsprechenden zval aus static_variables entsprechend dem Variablennamen ab, ändern Sie ihn dann in einen Referenztyp und weisen Sie ihn einer lokalen Variablen zu, d. h Sagen wir, static $count = 4; enthält zwei Operationen, streng genommen ist $count keine echte statische Variable, sondern nur eine lokale Variable, die auf eine statische Variable zeigt. Die tatsächliche Operation bei der Ausführung ist: $count = & static_variables["count" ];

PHP7-Kernelanalyse 4 lokale Variablen, globale Variablen, Konstanten


3. Globale Variablen

Globale Variablen Sie sind während der gesamten Anforderungsausführung immer vorhanden und werden in EG (executor_globals, Zend-Executor-bezogene globale Variablen) in der symbol_table gespeichert. Dies ist auch eine Hash-Tabelle, in der alle globalen Variablen im aktuellen Bereich gespeichert werden Sie müssen der symbol_table des EG hinzugefügt werden, bevor die Ausführung von zend_execute_ex beginnt.
Lese- und Schreibvorgänge: Wie der Zugriff auf statische Variablen konvertieren auch globale Variablen den ursprünglichen Wert in eine Referenz und erstellen dann eine lokale Variable im Gültigkeitsbereich von globaler Import, um auf die Referenz zu verweisen

PHP7-Kernelanalyse 4 lokale Variablen, globale Variablen, Konstanten


4. Konstanten

Konstanten werden in der zend_constants-Hash-Tabelle von EG gespeichert und auch darauf zugegriffen. Durchsuchen Sie die Hash-Tabelle direkt nach dem Konstantennamen
typedef struct _zend_constant {
    zval value;   //常量值
    zend_string *name; //常量名
} zend_constant;

Verwandte Empfehlungen:

PHP7-Kernel-Analyse 1 CGI und FastCGI

PHP7 Kernel Analysis 2 I/O Model

PHP7 Kernel Analysis 3 Variablen

Das obige ist der detaillierte Inhalt vonPHP7-Kernelanalyse 4 lokale Variablen, globale Variablen, Konstanten. 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