В связи с большим объёмом материала, публикацию пришлось разбить на две части. В первой из них я расскажу о том, как менялись реализации
Структура zval в пятой версии выглядит так:
Как видите, конструкция включает в себя
zval
(Zend value) начиная с пятой версии PHP. Также обсудим реализацию ссылок. Во второй части будет подробно рассмотрена реализация отдельных типов данных, таких как строки и объекты.zval’ы в PHP 5
Структура zval в пятой версии выглядит так:
typedef struct _zval_struct {
zvalue_value value;
zend_uint refcount__gc;
zend_uchar type;
zend_uchar is_ref__gc;
} zval;
Как видите, конструкция включает в себя
value
, type
и дополнительную информацию __gc
, о чём я расскажу ниже. Value
представляет собой объединение различных возможных значений, которые может хранить zval: