Как в PHP (да и не важно где) хранятся переменные, сами переменные (названия, может что-то еще) не значения? Я начал с языка PHP, т.к. сам являюсь разработчиком PHP.
Я знаю про zval структуру (php 5.6), как под нее выделяется память, какие атрибуты у этой структуры.
Более того, я в рамках универа неплохо писал на языке C, а потом на C++11 фреймворк Qt (даже на ассемблере написал порядка 300 строк).
Т.е. что такое куча и указатель, что такое malloc/realloc я имею представление.
Но, вхожу в ступор, когда размышляю, а как PHP собственно хранит само имя переменной? Откуда он знает, что такая переменная есть (с таким именем) в данном контексте, как выглядит типичная структура данных, которая хранит переменную (не значение)?
Ответ на данный вопрос не могу найти в гугле.
Спасибо.

21 Авг 2019 в 06:26
285 +1
0
Ответы
1

В PHP имена переменных хранятся в специальной структуре данных, называемой symbol table (таблица символов). Symbol table представляет собой хэш-таблицу, в которой ключами являются имена переменных, а значениями - сами переменные.

Когда вы создаёте переменную в PHP, её имя добавляется в symbol table текущего контекста (глобального или локального), а затем создаётся zval структура, которая будет хранить значение переменной. Zval содержит указатель на symbol table entry, которая содержит информацию об имени переменной, её области видимости и прочие метаданные.

Таким образом, PHP обеспечивает доступ к переменным по их именам, обращаясь к symbol table для поиска соответствующей переменной. Как только переменная будет удалена или выйдет из области видимости, соответствующая запись в symbol table также будет удалена.

Если у вас есть опыт работы с C и ассемблером, вам будет интересно изучить исходный код PHP, чтобы лучше понять, как реализован механизм работы с переменными и их именами.

20 Апр в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 94 757 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир