1. Konzept
Zval ist eine weitere sehr wichtige Datenstruktur in Zend, die zur Identifizierung und Implementierung von PHP-Variablen verwendet wird. Enthält Informationen zu Variablenwerten und -typen in PHP.
2. Zusammensetzung
Typ: Gibt den Typ der Variablen an (Ganzzahl, Zeichenfolge, Array usw.)
refcount&is_ref: wird zur Implementierung der Referenzzählung verwendet (detaillierte Einführung später)
Wert: Kernteil, der die tatsächlichen Daten der Variablen speichert
3. Beispiele
struct _zval_struct { Gewerkschaft { zend_long lval; /* langer Wert */ double dval; /* double value */ zend_refcounted *counted; zend_string *str; zend_array *arr; zend_object *obj; zend_resource *res; zend_reference *ref; zend_ast_ref *ast; zval *zv; void *ptr; zend_class_entry *ce; zend_function *func; struktur { uint32_t w1; uint32_t w2; } ww; } Wert; Gewerkschaft { struktur { ZEND_ENDIAN_LOHI_4( zend_uchar Typ, /* aktiver Typ */ zend_uchar type_flags, zend_uchar const_flags, zend_uchar reserviert) /* Aufrufinformationen für EX(This) */ } v; uint32_t type_info; } u1; Gewerkschaft { uint32_t var_flags; uint32_t next; /* Hash-Kollisionskette */ uint32_t cache_slot; /* literaler Cache-Slot */ uint32_t lineno; /* Zeilennummer (für ast-Knoten) */ uint32_t num_args; /* Argumente Nummer für EX(This) */ uint32_t fe_pos; /* foreach position */ uint32_t fe_iter_idx; /* foreach iterator index */ } u2; };
Das Obige ist die Einführung in Zval in PHP, ich hoffe, es wird für alle hilfreich sein.