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.