PHP内核中的基本数据类型

在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

你可能感兴趣的:(PHP,struct,object,Integer,character,Zend)