變量
typedef struct _zval_struct zval;
...
struct _zval_struct {
/* Variable information */
zvalue_value value; /* value */
zend_uint refcount__gc;
zend_uchar type; /* active type */
zend_uchar is_ref__gc;
};
PHP使用這個結構來存儲變量的所有數據。和其他編譯性靜態語言不同, PHP在存儲變量時將PHP用戶空間。的變量類型也保存在同一個結構體中。這樣我們就能通過這些信息獲取到變量的類型。
zval結構體中有四個字段,其含義分別爲:
屬性名 | 含義 | 默認值 |
---|---|---|
refcount__gc | 表示引用計數 | 1 |
is_ref__gc | 表示是否爲引用 | 0 |
value | 存儲變量的值 | |
type | 變量具體的類型 |
常量
常量的內部結構
typedef struct _zend_constant {
zval value; /*zval結構,PHP內部變量的存儲結構,在第一小節有說明 */
int flags; /* 常量的標記如 CONST_PERSISTENT | CONST_CS */
char *name; /* 常量名稱 */
uint name_len;
int module_number; /* 模塊號 */
} zend_constant;