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, надеюсь, оно будет полезно всем.