2012-05-02 16 views
12

Sono uno sviluppatore PHP da molti anni, ma non conosco solo un dettaglio di come PHP gestisce le variabili ei loro tipi dietro le quinte. Voglio dire: in PHP - in teoria - potrei usare la stessa variabile per memorizzare un intero, e poi una stringa, e poi un booleano, e poi un array ... ecc ...Come gestisce le variabili PHP?

Personalmente, detesto questo modalità di programmazione "scarsamente cast", ma mi chiedo come possa archiviare e gestire PHP le variabili e i loro tipi come ho chiesto. Immagino che l'interprete crea e gestisce le variabili C dietro, ma non riesco a capire come.

Grazie.

+0

Molto bello, sono un programmatore C++, ne w php e mi sono chiesto anche io. –

+6

Il termine è "digitato dinamicamente", non "scarsamente codificato", se non altro perché non è necessariamente una cosa negativa. –

risposta

12

Dietro le quinte, le variabili PHP sono memorizzate in una struttura "zval", che consiste in un'unione tra tutti i tipi di dati che la variabile può memorizzare (ad esempio, un lungo, un doppio, un puntatore/lunghezza della stringa , un puntatore a oggetti ...), e un paio di altri campi al di fuori dell'unione che indicano quale tipo è e tengono traccia di un conteggio dei riferimenti.

C'è qualche ulteriore discussione di questo a:

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

+0

Molto esauriente! Grazie :) –

-1

Se ricordo bene, PHP avvierà diverse variabili in memoria per ogni variabile in PHP:

$test = 0; 

traduce in ..

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

Se è vero, è orribilmente inefficiente senza una buona ragione. Citazione? – delnan

+0

Guarda la risposta di duskwuff, è meglio della mia. –

+0

La sua risposta dice qualcosa di diverso. In realtà, la sua risposta implica che esiste solo una variabile. – delnan

Problemi correlati