2012-05-02 4 views
12

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

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

спасибо.

+0

Очень хорошо, я программист на С ++, ne w to php, и мне тоже интересно. –

+6

Термин «динамически типизированный», а не «плохой кастинг», хотя бы потому, что его не обязательно отрицательная вещь. –

ответ

12

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

Там какая-то дальнейшее обсуждение этого на:

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

+0

Очень исчерпывающий! Спасибо :) –

-1

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

$test = 0; 

Переводит к .. .

int test = 0; 
float test = 0; 
char test = 0; 
bool test = false; 
pointer test = null; 
... 
+0

Если это правда, это ужасно неэффективно без уважительной причины. Цитирование? – delnan

+0

См. Ответ duskwuff, это лучше, чем мое. –

+0

Его ответ говорит что-то другое. Фактически, его ответ подразумевает существование только одной переменной. – delnan

Смежные вопросы