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، وآمل أن يكون مفيدًا للجميع.