
1. Konsep
Zval adalah struktur data lain yang sangat penting di zend, digunakan untuk mengidentifikasi dan mengimplementasikan variabel PHP. Berisi informasi tentang nilai dan tipe variabel pada PHP.
2. Komposisi
type: menentukan tipe variabel (integer, string, array, dll.)
refcount&is_ref: digunakan untuk mengimplementasikan penghitungan referensi (pengenalan detailnya nanti)
value: bagian inti, yang menyimpan data aktual dari variabel
3. Contoh
struct _zval_struct {
serikat pekerja {
zend_long lval; /* nilai panjang */
nilai ganda; /* nilai ganda */
zend_refcounted *dihitung;
zend_string *str;
zend_array *arr;
zend_objek *obj;
zend_resource *res;
zend_reference *ref;
zend_ast_ref *ast;
zval *zv;
batal *ptr;
zend_class_entry *ce;
zend_function *fungsi;
struktur {
uint32_t w1;
uint32_t w2;
} ww;
} nilai;
serikat pekerja {
struktur {
ZEND_ENDIAN_LOHI_4(
tipe zend_uchar, /* tipe aktif */
zend_uchar type_flags,
zend_uchar const_flags,
zend_uchar milik) /* info panggilan untuk EX(Ini) */
} v;
uint32_t type_info;
} kamu1;
serikat pekerja {
uint32_t var_flags;
uint32_t selanjutnya; /* rantai tabrakan hash */
uint32_t cache_slot; /* slot cache literal */
uint32_t lineno; /* nomor baris (untuk node ast) */
uint32_t num_args; /* nomor argumen untuk EX(Ini) */
uint32_t fe_pos; /* posisi depan */
uint32_t fe_iter_idx; /* mencari indeks iterator */
} kamu2;
};Di atas adalah pengenalan Zval di PHP, semoga bermanfaat bagi semuanya.