变量
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;
本文介绍了PHP中变量和常量的内部存储结构。zval结构体用于存储所有类型的变量数据,包括其类型信息。同时,文章还详细解释了用于存储常量的zend_constant结构体。
1018

被折叠的 条评论
为什么被折叠?



