So implementieren Sie PHP-Variablen: Deklarieren Sie zunächst einen ZVAL-Zeiger und wenden Sie ihn auf einen Speicherbereich an. Setzen Sie dann den Wert über das Makro [ZVAL_STRING] auf bar. Fügen Sie schließlich den ZVAL zur aktuellen Symboltabelle hinzu und definieren Sie seine Bezeichnung in foo.
【Verwandte Lernempfehlung: php-Grafik-Tutorial】
So implementieren Sie PHP-Variablen:
Einführung
In der offiziellen PHP-Implementierung verwenden alle Variablen dieselbe Datenstruktur (zval) zu speichern, und diese Struktur repräsentiert auch verschiedene Datentypen in PHP. Es enthält nicht nur den Wert der Variablen, sondern auch den Typ der Variablen. Dies ist der Kern der schwachen Typisierung von PHP.
Skalare Typen: boolean, integer, float(double), string
Composite-Typen: Array, Objekt
Sondertypen: Ressource, NULL
Speicherstruktur von Variablen
PHP Variablen werden im Kernel über die zval-Struktur gespeichert. Sie ist kurz und prägnant und besteht aus nur vier Mitgliedern:
struct _zval_struct { zvalue_value value; /* 变量的值 */ zend_uint refcount__gc; zend_uchar type; /* 变量当前的数据类型 */ zend_uchar is_ref__gc; }; typedef struct _zval_struct zval; //在Zend/zend_types.h里定义的: typedef unsigned int zend_uint; typedef unsigned char zend_uchar;
refcount__gc bedeutet Referenzanzahl 1
is_ref__gc Gibt an, ob es sich um eine Referenz 0 handelt.
Wert speichert den Wert der Variablen. Geben Sie den spezifischen Typ der Variablen ein Das kritischste Feld zur Implementierung schwacher Typisierung, Typ. Die Werte von können sein:
,,
,. Es ist leicht zu verstehen, dass es sich nur um eindeutige Typenbezeichner handelt, und je nach Typ werden unterschiedliche Werte im Wertfeld gespeichert. Darüber hinaus sind die damit definierten Typen und .
IS_NULL
BeispielIS_BOOL
IS_LONG
<?php $foo = 'bar'; ?>
IS_DOUBLE
Das Obige ist ein Beispiel für die PHP-Sprache. Erstellen Sie eine Variable und legen Sie ihren Wert auf „bar“ fest. Schritte: Erstellen Sie eine ZVAL-Struktur und legen Sie ihren Typ fest. Wert auf „bar“ setzen. Fügen Sie es der Symboltabelle des aktuellen Bereichs hinzu, damit Benutzer diese Variable in PHP verwenden können. Der spezifische Code lautet: IS_STRING
{ zval *fooval; MAKE_STD_ZVAL(fooval); ZVAL_STRING(fooval, "bar", 1); ZEND_SET_SYMBOL( EG(active_symbol_table) , "foo" , fooval); }
IS_ARRAY
Zuerst deklarieren wir einen ZVAL-Zeiger und beantragen einen Teil des Speichers. Setzen Sie dann den Wert über das ZVAL_STRING-Makro auf bar. Die Funktion der letzten Zeile besteht darin, diesen zval zur aktuellen Symboltabelle hinzuzufügen und seine Bezeichnung als foo zu definieren, damit Benutzer ihn über $foo im Code verwenden können. IS_OBJECT
IS_RESOURCE
IS_CONSTANT
Verwandte Lernempfehlungen: IS_CONSTANT_ARRAY
php-Programmierung (Video) Das obige ist der detaillierte Inhalt vonWie werden PHP-Variablen implementiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!