ثلاثة أوضاع مخرجات PHP
يحوّل وضع المصفوفة الترابطية في PHP كائنات JSON إلى قيم مصفوفة PHP حرفية باستخدام صياغة array() القياسية أو الصياغة المختصرة []. هذه أبسط مخرجات ولا تتطلب أي تعريفات أصناف — مثالي لملفات الإعداد والبيانات الثابتة والنصوص البرمجية لمرة واحدة.
يستخدم وضع stdClass أسلوب مخرجات json_decode($json) ممثّلًا كل كائن JSON ككائن PHP مجهول مع خصائص عامة. يعكس هذا ما يُعيده json_decode() المدمج في PHP عندما تكون الوسيطة الثانية false (القيمة الافتراضية).
يولّد وضع الأصناف المكتوبة بالأنواع تعريفات أصناف PHP مع خصائص عامة مكتوبة باستخدام أنواع union والأنواع القابلة للقيمة الفارغة في PHP 8+. يصبح كل كائن JSON صنفًا مع مُنشئ يضع جميع الخصائص مكتوبة بقوة بـ int وfloat وstring وbool وarray و?T للحقول القابلة للقيمة الفارغة.
نظام أنواع PHP 8 واصطلاحات التسمية
قدّم PHP 8 ترقية خصائص المُنشئ وأنواع union. يستخدم المولّد ترقية المُنشئ افتراضيًا — الخصائص المُعلَّنة مباشرةً في توقيع المُنشئ مع الرؤية والنوع — مما يُقلّل الكود المتكرر إلى الحد الأدنى.
تُحوَّل مفاتيح JSON إلى معرّفات PHP صالحة وفق اصطلاح camelCase. المفاتيح التي تبدأ بأرقام تُبادَر بشرطة سفلية. الكلمات المحجوزة في PHP المستخدمة كأسماء خصائص تُبادَر أيضًا بشرطة سفلية ويسجّل تعليق doc المفتاح الأصلي.
للخصائص القابلة للقيمة الفارغة يُنتج المولّد ?string و?int و?float و?bool و?اسم الصنف. تُستخدم أنواع union في PHP 8.0+ عندما يحتوي حقل على أنواع مختلطة عبر عناصر مصفوفة.
سير عمل Laravel وSymfony
يحتاج مطوّرو Laravel كثيرًا إلى تعريف خصائص نموذج Eloquent من أشكال استجابات API. تمنحك مخرجات الصنف المكتوب بالأنواع صنف PHP مكتوب يعكس عقد API مفيد كـ DTO بين أصناف الخدمة.
يمكن لمطوّري Symfony الذين يستخدمون مكوّن Serializer أو API Platform إدراج الأصناف المكتوبة المولّدة مباشرةً في مشروعهم. الأصناف متوافقة مع مكوّن PropertyAccess في Symfony.
يحتاج مطوّرو PHP الذين يبنون إضافات WordPress أو وحدات Drupal أو نصوصًا مستقلة كثيرًا إلى إلغاء تسلسل استجابات JSON. مخرجات المصفوفة هي الأسرع تكاملًا بدون الحاجة إلى التحميل التلقائي.