PHP内核中的基本数据类型

来源:互联网 发布:598营销软件站 编辑:程序博客网 时间:2024/05/18 09:56

在PHP内核里,最基本的存储单元是zval,或者Zend Value。他是一个只有四个成员的小结构体。在Zend/zend.h中对其做了如下定义:

typedef struct _zval_struct {    zvalue_value value;    zend_uint refcount;    zend_uchar type;    zend_uchar is_ref;} zval;
直观上很容易判断出:refcount是一个无符号整数(unsigned integer),type和is_ref都是无符号字符(unsigned character)。但是value成员是一个联合结构体,在php5中是这样定义的:
typedef union _zvalue_value {    long lval;    double dval;    struct {        char *val;        int len;    } str;    HashTable *ht;    zend_object_value obj;} zvalue_value;
这个联合体允许Zend存储不同类型的数据。
Zend当前定义了八种数据类型:IS_NULL, IS_LONG, IS_DOUBLE,IS_STRING,IS_ARRAY,IS_OBJECT,IS_RESOURCE
原创粉丝点击