
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.