1. Conceito
Zval é outra estrutura de dados muito importante no zend, usada para identificar e implementar variáveis PHP. Contém informações sobre valores e tipos de variáveis em PHP.
2. Composição
tipo: especifica o tipo de variável (inteiro, string, array, etc.)
refcount&is_ref: usado para implementar a contagem de referência (introdução detalhada posteriormente)
valor: parte central, que armazena os dados reais da variável
3. Exemplos
estrutura _zval_struct { união { zend_long lval; /* valor longo */ double dval; /* valor duplo */ zend_refcounted *contado; zend_string *str; zend_array *arr; zend_object *obj; zend_resource *res; referência_zend *ref; zend_ast_ref *ast; zval *zv; vazio *ptr; zend_class_entry *ce; zend_function *func; estrutura { uint32_t w1; uint32_t w2; } www; } valor; união { estrutura { ZEND_ENDIAN_LOHI_4( tipo zend_uchar, /* tipo ativo */ zend_uchar type_flags, zend_uchar const_flags, zend_uchar reservado) /* informações de chamada para EX(This) */ }v; uint32_t type_info; } u1; união { uint32_t var_flags; uint32_t next; /* cadeia de colisão de hash */ uint32_t cache_slot; /* slot de cache literal */ uint32_t lineno; /* número da linha (para nós ast) */ uint32_t num_args; /* número de argumentos para EX(This) */ uint32_t fe_pos; /* posição foreach */ uint32_t fe_iter_idx; /* índice do iterador foreach */ }u2; };
O texto acima é uma introdução ao Zval em PHP, espero que seja útil para todos.