下面我們大概了解下php7的變量類型都有哪些,是如何存儲變量的。
php7中是使用zval結構存儲變量資訊的。zval結構的定義在./zend/zend_types.h檔案中定義。
通過上面的代碼我們可以看到。變量是通過一個_zval_struct結構體方式存儲的。其中結構體中的value存儲的是變量的值。這個成員是zend_value類型的。zend_value類型的定義如下:
zend_value是一個聯合體。對于小于64位的簡單類型,會直接存儲值。如,long double。而對于其他比較複雜的類型,如字元串,數組,對象等,是存儲的指針。這樣,對于簡單類型來說,變得簡單高效。
zval聯合體的type存儲的是變量的類型。php7已經提供了我們擷取變量類型的宏方法z_type。宏方法的定義如下:
在php7中,設定變量類型提供了新的方法。
下面的代碼實作了一個類似var_dump的方法。