
1. Концепция
Zval — еще одна очень важная структура данных в Zend, используемая для идентификации и реализации переменных PHP. Содержит информацию о значениях и типах переменных в PHP.
2. Состав
тип: указывает тип переменной (целое число, строка, массив и т. д.).
refcount&is_ref: используется для подсчета ссылок (подробное описание позже).
значение: основная часть, в которой хранятся фактические данные переменной.
3. Примеры
структура _zval_struct {
союз {
zend_long lval; /* длинное значение */
двойной dval; /* двойное значение */
zend_refcounted *подсчитано;
zend_string *str;
zend_array *arr;
zend_object *объект;
zend_resource *res;
zend_reference *ссылка;
zend_ast_ref *ast;
звал *zv;
недействительный *ptr;
zend_class_entry *ce;
zend_function * функция;
структура {
uint32_t w1;
uint32_t w2;
} Вау;
} ценить;
союз {
структура {
ZEND_ENDIAN_LOHI_4(
тип zend_uchar, /* активный тип */
zend_uchar type_flags,
zend_uchar const_flags,
zend_uchar зарезервировано) /* информация о вызове для EX(This) */
} В;
uint32_t type_info;
} и1;
союз {
uint32_t var_flags;
uint32_t next; /* цепочка коллизий хэша */
uint32_t cache_slot; /* буквальный слот кэша */
uint32_t lineno; /* номер строки (для узлов ast) */
uint32_t num_args; /* количество аргументов для EX(This) */
uint32_t fe_pos; /* позиция для каждой позиции */
uint32_t fe_iter_idx; /* индекс итератора для каждого */
} и2;
};Вышеупомянутое представляет собой введение в Zval на PHP, надеюсь, оно будет полезно всем.