1. แนวคิด
Zval เป็นอีกหนึ่งโครงสร้างข้อมูลที่สำคัญมากใน zend ซึ่งใช้ในการระบุและใช้งานตัวแปร PHP มีข้อมูลเกี่ยวกับค่าตัวแปรและประเภทของ PHP
2. องค์ประกอบ
type: ระบุประเภทของตัวแปร (จำนวนเต็ม สตริง อาเรย์ ฯลฯ)
refcount&is_ref: ใช้เพื่อดำเนินการนับการอ้างอิง (แนะนำโดยละเอียดในภายหลัง)
ค่า: ส่วนหลักซึ่งเก็บข้อมูลจริงของตัวแปร
3. ตัวอย่าง
struct _zval_struct { สหภาพ { zend_long lval; /* ค่ายาว */ สองเท่า; /* ค่าสองเท่า */ zend_refcounted *นับ; zend_string *str; zend_array *arr; zend_object *obj; zend_resource *ความละเอียด; zend_reference *อ้างอิง; 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 type_flags, zend_uchar const_flags, zend_uchar สงวนไว้) /* ข้อมูลการโทรสำหรับ EX(นี่) */ } โวลต์; uint32_t type_info; } u1; สหภาพ { uint32_t var_flags; uint32_t ถัดไป; /* ห่วงโซ่การชนกันของแฮช */ uint32_t cache_slot; /* สล็อตแคชตัวอักษร */ uint32_t lineno; /* หมายเลขบรรทัด (สำหรับโหนด ast) */ uint32_t num_args; /* หมายเลขอาร์กิวเมนต์สำหรับ EX (นี่) */ uint32_t fe_pos; /* ค้นหาตำแหน่ง */ uint32_t fe_iter_idx; /* foreach ดัชนีตัววนซ้ำ */ } u2; -
ข้างต้นนี้เป็นการแนะนำ Zval ใน PHP ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน