2012-05-02 27 views
12

Jestem programistą PHP od wielu lat, ale nie znam tylko jednego szczegółu tego, jak PHP obsługuje zmienne i ich typy za kulisami. Mam na myśli: w PHP - teoretycznie - mógłbym użyć tej samej zmiennej do zapisania liczby całkowitej, a następnie do napisu, a następnie do boolowskiej, a następnie do tablicy ... etc ...W jaki sposób PHP obsługuje zmienne?

Osobiście nienawidzę tego sposób "źle obsadzonego" programowania, ale zastanawiam się, w jaki sposób PHP może przechowywać i zarządzać zmiennymi i ich typami, o jakie prosiłem. Wyobrażam sobie, że interpreter tworzy i obsługuje zmienne C w tyle, ale nie wiem, jak to zrobić.

Dziękuję.

+0

Bardzo miło, jestem programistą C++, ne w do php i też się zastanawiałem. –

+6

Termin jest "wpisywany dynamicznie", a nie "źle rzucany", choćby dlatego, że niekoniecznie jest czymś negatywnym. –

Odpowiedz

12

Za kulisami zmienne PHP są przechowywane w strukturze "zval", która składa się z połączenia wszystkich typów danych, które może przechowywać zmienna (np. Długa, podwójna, wskaźnik łańcuchowy/długość , wskaźnik obiektu ...) i kilka innych pól poza związkiem, które wskazują, jaki to jest i śledzić licznik referencji.

Jest jakaś dalsza dyskusja o tym na:

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

+0

Bardzo wyczerpujący! Dziękuję :) –

-1

Jeśli dobrze pamiętam, PHP będzie inicjować kilka zmiennych w pamięci dla każdej zmiennej w PHP:

$test = 0; 

przekłada się ..

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

Jeśli to prawda, jest to strasznie nieskuteczne bez żadnego powodu. Cytat? – delnan

+0

Zobacz odpowiedź duskwuff, to lepsze niż moje. –

+0

Jego odpowiedź mówi coś innego. W rzeczywistości jego odpowiedź sugeruje, że istnieje tylko jedna zmienna. – delnan

Powiązane problemy