2012-05-02 20 views
12

Soy desarrollador de PHP desde hace muchos años pero no conozco solo un detalle de cómo maneja PHP las variables y sus tipos detrás de escena. Quiero decir: en PHP - en teoría - podría usar la misma variable para almacenar un entero, y luego una cadena, y luego un booleano, y luego una matriz ... etc ...¿Cómo maneja PHP las variables?

Personalmente, detesto esto forma de programación "mal hecha", pero me pregunto cómo puede PHP almacenar y administrar las variables y sus tipos como lo pedí. Me imagino que el intérprete crea y maneja las variables C detrás, pero no puedo entender cómo.

Gracias.

+0

Muy bueno, soy un programador de C++, ne w a php y me he estado preguntando también. –

+6

El término es "de tipo dinámico", no "mal escrito", aunque solo sea porque no es necesariamente algo negativo. –

Respuesta

12

Detrás de escena, las variables de PHP se almacenan en una estructura "zval", que consiste en una unión entre todos los tipos de datos que la variable podría almacenar (por ejemplo, un largo, un doble, un puntero de cadena/longitud , un puntero de objeto ...), y un par de otros campos fuera de la unión que indican de qué tipo es y realizar un seguimiento de un recuento de referencia.

Hay alguna discusión adicional de esto en:

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

+0

¡Muy exhaustivo! Gracias :) –

-1

Si no recuerdo mal, PHP iniciará varias variables en la memoria para cada variable en PHP:

$test = 0; 

traduce en ..

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

Si eso es cierto, es terriblemente ineficiente sin una buena razón. ¿Citación? – delnan

+0

Mira la respuesta de duskwuff, es mejor que la mía. –

+0

Su respuesta dice algo diferente. De hecho, su respuesta implica que solo existe una variable. – delnan

Cuestiones relacionadas