1. Concept
Zval est une autre structure de données très importante dans Zend, utilisée pour identifier et implémenter les variables PHP. Contient des informations sur les valeurs et les types de variables en PHP.
2.Composition
type : spécifie le type de variable (entier, chaîne, tableau, etc.)
refcount&is_ref : utilisé pour implémenter le comptage de références (introduction détaillée plus tard)
valeur : partie centrale, qui stocke les données réelles de la variable
3. Exemples
struct _zval_struct { syndicat { zend_long lval; /* valeur longue */ double dval; /* double valeur */ zend_refcounted *compté ; zend_string *str; zend_array *arr; zend_object *obj; zend_resource *res; zend_reference *réf; zend_ast_ref *ast; zval *zv; vide *ptr; zend_class_entry *ce; zend_function *func; structure { uint32_t w1 ; uint32_t w2; } ww; } valeur; syndicat { structure { ZEND_ENDIAN_LOHI_4( type zend_uchar, /* type actif */ zend_uchar type_flags, zend_uchar const_flags, zend_uchar réservé) /* infos d'appel pour EX(This) */ } v; uint32_t type_info ; } u1; syndicat { uint32_t var_flags ; uint32_t next; /* chaîne de collision de hachage */ uint32_t cache_slot; /* emplacement de cache littéral */ uint32_t lineno; /* numéro de ligne (pour les nœuds ast) */ uint32_t num_args; /* nombre d'arguments pour EX(This) */ uint32_t fe_pos; /* pour chaque position */ uint32_t fe_iter_idx; /* index de l'itérateur pour chaque */ } u2; } ;
Ce qui précède est l'introduction à Zval en PHP, j'espère que cela sera utile à tout le monde.