Как устроены переменные
Переменная PHP хранится в контейнере, называемом zval (сокращённо от «Zend value»).
Контейнер zval, помимо типа и значения переменной, также содержит два дополнительных элемента.
- is_ref — указывает, является ли переменная частью «набора ссылок» или нет;
- refcount — содержит количество имён переменных (символов), которые указывают на данный контейнер zval.
Для вывода информации о переменной используется функция xdebug_debug_zval()
, для которой предварительно надо установить Xdebug.
$lang = 'PHP'; xdebug_debug_zval('lang'); // (refcount=1, is_ref=0), string 'PHP' (length=3)
Есть также функция debug_zval_dump()
, но её не рекомендуется использовать, т.к. через неё сложно отслеживать значение refcount.
Благодаря свойству «is_ref», PHP знает как отличать обычные переменные от ссылок.
Поддержать автора