Php zend_如何在zval中使用?

Php zend_如何在zval中使用?,php,Php,我无法理解zend_refcounted*counted的目的字段(它是zval的一部分)。什么时候用 typedef union _zend_value { zend_long lval; /* long value */ double dval; /* double value */ zend_refcounted *counted; zend_string *s

我无法理解
zend_refcounted*counted的目的union\u zend\u value
中的code>字段(它是
zval
的一部分)。什么时候用

typedef union _zend_value {
    zend_long         lval;             /* long value */
    double            dval;             /* double value */
    zend_refcounted  *counted;
    zend_string      *str;
    zend_array       *arr;
    zend_object      *obj;
    zend_resource    *res;
    zend_reference   *ref;
    zend_ast_ref     *ast;
    zval             *zv;
    void             *ptr;
    zend_class_entry *ce;
    zend_function    *func;
    struct {
        uint32_t w1;
        uint32_t w2;
    } ww;
} zend_value;
我知道,每个表示非标量值的结构,如
zend\u string
zend\u array
等,都是从
zend\u refcounted\u h
结构开始的。因此,zend_ref也被计算在内,但除此之外没有别的

typedef struct _zend_refcounted zend_refcounted;
/*...*/
struct _zend_refcounted {
    zend_refcounted_h gc;
};