
1. 컨셉
Zval은 PHP 변수를 식별하고 구현하는 데 사용되는 zend의 또 다른 매우 중요한 데이터 구조입니다. PHP의 변수 값 및 유형에 대한 정보가 포함되어 있습니다.
2. 구성
type: 변수의 유형(정수, 문자열, 배열 등)을 지정합니다.
refcount&is_ref: 참조 카운팅을 구현하는 데 사용됩니다(자세한 소개는 나중에 설명).
value: 변수의 실제 데이터를 저장하는 핵심 부분
3. 예시
구조체 _zval_struct {
노동조합 {
zend_long lval; /* 긴 값 */
double dval; /* 이중 값 */
zend_refcounted *계산됨;
zend_string *str;
zend_array *arr;
zend_object *obj;
zend_resource *res;
zend_reference *ref;
zend_ast_ref *ast;
zval *zv;
무효 *ptr;
zend_class_entry *ce;
zend_function *func;
구조체 {
uint32_t w1;
uint32_t w2;
} 와우;
} 값;
노동조합 {
구조체 {
ZEND_ENDIAN_LOHI_4(
zend_uchar 유형, /* 활성 유형 */
zend_uchar 유형_플래그,
zend_uchar const_flags,
zend_uchar 예약됨) /* EX(This)에 대한 통화 정보 */
} v;
uint32_t type_info;
} u1;
노동조합 {
uint32_t var_flags;
uint32_t next; /* 해시 충돌 체인 */
uint32_t 캐시 슬롯; /* 리터럴 캐시 슬롯 */
uint32_t lineno; /* 줄 번호(ast 노드용) */
uint32_t num_args; /* EX(This)에 대한 인수 수 */
uint32_t fe_pos; /* foreach 위치 */
uint32_t fe_iter_idx; /* foreach 반복자 인덱스 */
} u2;
};위 내용은 PHP의 Zval에 대한 소개입니다. 모든 사람에게 도움이 되기를 바랍니다.