Как PHP обрабатывает переменные?

12

Я разработчик PHP с многих лет, но я не знаю только одной детали того, как PHP обрабатывает переменные и их типы за кулисами. Я имею в виду: в PHP - теоретически - я мог бы использовать одну и ту же переменную для хранения целого числа, а затем строку, а затем логическую, а затем массив... и т.д.

Лично я ненавижу этот способ "плохого" программирования, но мне интересно, как PHP может хранить и управлять переменными и их типами, как я спросил. Я предполагаю, что интерпретатор создает и обрабатывает переменные C позади, но я не могу понять, как это сделать.

Спасибо.

  • 0
    Очень хорошо, я программист на C ++, новичок в php, и мне тоже интересно.
  • 6
    Термин «динамически типизированный», а не «плохо приведенный», хотя бы потому, что это не обязательно отрицательная вещь.
Теги:

2 ответа

12
Лучший ответ

За кулисами переменные PHP хранятся в структуре "zval", которая состоит из объединения между всеми типами данных, которые может хранить переменная (например, длинный, двойной, указатель/длина строки, указатель объекта...) и несколько других полей вне объединения, которые указывают, какой тип он есть, и отслеживать счетчик ссылок.

Далее обсуждалось следующее:

http://devzone.zend.com/317/extension-writing-part-ii-parameters-arrays-and-zvals/

  • 0
    Очень исчерпывающе! Спасибо :)
-2

Если я правильно помню, PHP будет инициировать несколько переменных в памяти для каждой переменной в PHP:

$test = 0;

Переводит на...

int test = 0;
float test = 0;
char test = 0;
bool test = false;
pointer test = null;
...
  • 0
    Если это правда, это ужасно неэффективно без веской причины. Цитирование?
  • 0
    Смотри ответ сумерек, он лучше моего.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню