
1. المفهوم
Zval هي بنية بيانات أخرى مهمة جدًا في Zend، وتستخدم لتحديد وتنفيذ متغيرات PHP. يحتوي على معلومات حول قيم وأنواع المتغيرات في PHP.
2. التكوين
النوع: يحدد نوع المتغير (عدد صحيح، سلسلة، صفيف، إلخ.)
refcount&is_ref: يُستخدم لتنفيذ العد المرجعي (مقدمة تفصيلية لاحقًا)
القيمة: الجزء الأساسي الذي يخزن البيانات الفعلية للمتغير
3. أمثلة
البنية _zval_struct {
اتحاد {
zend_long lval; /* القيمة الطويلة */
مزدوج دفال /* قيمة مزدوجة */
zend_refcounted *counted;
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، /* النوع النشط */
زيند_أوشار type_flags,
زيند_أوشار const_flags,
Zend_uchar محجوز) /* معلومات الاتصال لـ EX(This) */
} الخامس؛
uint32_t type_info;
} u1;
اتحاد {
uint32_t var_flags;
uint32_t التالي /* سلسلة تصادم التجزئة */
uint32_t Cache_slot /* فتحة ذاكرة التخزين المؤقت الحرفية */
uint32_t lineno; /* رقم السطر (للعقد ast) */
uint32_t num_args /* رقم الوسيطات لـ EX(This) */
uint32_t fe_pos /* موقف foreach */
uint32_t fe_iter_idx /* فهرس التكرار */
} u2;
};ما ورد أعلاه هو مقدمة لـ Zval في PHP، وآمل أن يكون مفيدًا للجميع.