اصطلاحات الوصفات
اصطلاحات الوصفات
قسم بعنوان «اصطلاحات الوصفات»تلتزم كل وصفة قابلة للتشغيل في كتاب وصفات التكامل بالعقد نفسه. توثّق هذه الصفحة ذلك العقد لتعرف ما تتوقعه من الوصفة وما يجب على مؤلفها توفيره. هذه صفحة وصفية: تسجّل الاصطلاح فقط. أما فرض هذه الاصطلاحات فيتم في أدوات المستودع وفي ورقة تجاوزات النمط، لا هنا.
يخزّن كل تكامل وصفاته في docs/public/ داخل مستودع المصدر الخاص به، ثم يسحبها المُجمِّع إلى هذا الموقع. تنطبق هذه الاصطلاحات حيثما وُجدت الوصفة.
1. العيّنات شيفرة حقيقية، لا مقتطفات مكتوبة يدويًا
قسم بعنوان «1. العيّنات شيفرة حقيقية، لا مقتطفات مكتوبة يدويًا»توجد شيفرة الوصفة في مستودع، وليست مقتطفًا مكتوبًا داخل النص.
- تأتي كل كتلة شيفرة PHP يتجاوز طولها خمسة أسطر من دليل
examples/في المستودع المقابل، أو من دليلtests/Cookbook/. - تصرّح الكتلة بمصدرها في سلسلة معلومات الكتلة المُسيَّجة، مثل
title="examples/standalone.php". - يؤكّد اختبار مقابل أن المثال لا يزال يُترجَم وينتج المُخرَج الموثَّق، بحيث لا يمكن للصفحة المعروضة أن تنحرف عن الشيفرة التي تعرضها.
ينبثق هذا الاصطلاح من ورقة تجاوزات نمط التوثيق §3.4 (“يجب أن تكون العيّنات قابلة للتشغيل”). ولا تستوفي الاصطلاح أي وصفة تعرض شيفرة دون مثال أو اختبار داعم.
2. لغة واحدة لكل كتلة، مع إظهار معالجة الأخطاء
قسم بعنوان «2. لغة واحدة لكل كتلة، مع إظهار معالجة الأخطاء»- تحتوي كل كتلة شيفرة مُسيَّجة على لغة واحدة بالضبط، معلَنة صراحةً (
```php،```bash،```yaml،```json). لا تُستخدَم الأسيجة المجردة. - تُظهِر الوصفة الموسومة بأنها دليل جاهز للإنتاج
try/catchصراحةً، وتلتقط أكثر أنواع الاستثناءات المنطبقة تحديدًا بدلًا من\Exceptionالمجرّد، وتجعل كتلة الالتقاط تؤدي إجراءً يمكن للقارئ نسخه (تسجيل، أو إعادة الرمي، أو إرجاع كائن خطأ معرَّف). لا تُستخدَم كتل الالتقاط الفارغة. - في تكاملات النقل عبر بروتوكول نقل النص التشعبي (HTTP)، تتعامل الوصفة مع فشل النقل وحالة HTTP غير الناجحة بوصفهما حالتين منفصلتين. لا يرفع عميل توصية معايير PHP (PSR)-18 استثناء عميل مُصنَّف النوع إلا عندما يتعذّر إرسال الطلب. وتكون الاستجابة
4xxأو5xxقيمة إرجاع عادية تفحصها الوصفة، لا استثناءً تلتقطه.
3. البيانات التمهيدية لقابلية التكرار
قسم بعنوان «3. البيانات التمهيدية لقابلية التكرار»تعلن كل وصفة مدى قابلية مُخرَجها للتكرار، وتستخدم عقد البيانات التمهيدية §5.1 الذي يفرضه مخطط محتوى الموقع. الحقول ذات الصلة هي:
reproducibility_profile— واحد منbitwise، أوstructural، أوsemantic. يعنيbitwiseأن بايتات المُخرَج متطابقة عبر التشغيلات عند تثبيت المدخلات. ويعنيstructuralأن بنية المستند متطابقة، مع احتمال اختلاف البايتات العَرَضية (الطوابع الزمنية، وترتيب الكائنات). ويعنيsemanticأن النتيجة المعروضة مكافئة، دون ضمان على مستوى البايت أو البنية. تذكر الوصفة أقوى ملف يمكنها دعمه بصدق، لا أقوى ملف متاح.output_hash— عندما يكون الملفbitwise، تكون القيمة تجزئة SHA-256 للمُخرَج المتوقَّع، بحيث يستطيع القارئ التحقق من النتيجة الموثَّقة. ويُترك الحقل فارغًا عندما لا يدعم الملف تجزئة مستقرة.runnable_example— مسارexamples/…الذي ينتج مُخرَج الوصفة، ويربط الصفحة بالعيّنة المدعومة بمصدرها في §1.performance_budget— حد اختياري لزمن الساعة الفعلي وذروة الذاكرة للوصفة، بحيث تظل الوصفة التي تطرح أيضًا ادعاءً بشأن الأداء محدودة النطاق وقابلة للاختبار.compatibility— إصدارات PHP التي تدّعي الوصفة أنها تعمل عليها. تعتمد الوصفات PHP 8.4 افتراضيًا؛ والوصفة التي تذكر ميزة خاصة بالإصدار 8.4 فقط تدرج النقل العكسي في بياناتها التمهيدية وتشير إلى الميزة في كتلة الشيفرة.
يمثّل ملف قابلية التكرار عقد قابلية التكرار §8.4. استخدمه لتحديد ما إذا كان “المُخرَج” يعني بايتات دقيقة أم مستندًا مكافئًا.
4. بوابة النشر
قسم بعنوان «4. بوابة النشر»تحمل كل صفحة في كتاب الوصفات هذا publish: false إلى أن تجتاز بوابة الكتابة. الافتراض هو الرفض: دمج الصفحة لا ينشرها؛ ولا ينشرها إلا قرار بوابة صريح مسجَّل في البيانات التمهيدية. الوصفة التي يتعذّر تثبيت استشهاداتها المعيارية بسبب انقطاع فعلي في محرك الامتثال تحمل أيضًا علامة استشهاد غير محسومة. وتظل publish: false إلى أن يُعاد تثبيت الاستشهاد. يحكم تلك العلامةَ بروتوكولُ الاحتياط عند انقطاع البنية التحتية للتوليد المعزَّز بالاسترجاع (RAG) في المستودع؛ ويتبع مؤلف الوصفة ذلك البروتوكول بدلًا من اختلاق استشهاد أو إسقاط الادعاء.
5. يكتب المُجمِّع حقول المصدر
قسم بعنوان «5. يكتب المُجمِّع حقول المصدر»لا يكتب مؤلف الوصفة يدويًا حقول مصدر المنشأ الأربعة التي يملكها المُجمِّع: source_repo، وsource_ref، وsource_hash، وmanifest_hash. يملؤها المُجمِّع عند سحب الوصفة من مستودع مصدرها، بحيث تسجّل الصفحة المنشورة بدقة مراجعة المستودع التي أنتجتها. إذا ترك المؤلف عنصرًا نائبًا في أي من هذه الحقول، استبدله المُجمِّع؛ ولا يصل العنصر النائب إلى الصفحة المنشورة أبدًا.
الملخّص
قسم بعنوان «الملخّص»تتضمن الوصفة في كتاب الوصفات هذا شيفرة مدعومة بمصدرها ومرفقة باختبار، ولغة واحدة لكل كتلة، ومعالجة أخطاء صريحة لأدلة الإنتاج، وملف قابلية تكرار صادق، وافتراض publish: false حتى بوابة الكتابة، ومصدر منشأ يحقنه المُجمِّع. الصفحة التي تستوفي هذه العناصر الستة جميعها وصفة؛ والصفحة التي تستوفي أقل من ذلك مسوَّدة.
انظر أيضًا
قسم بعنوان «انظر أيضًا»- كتاب وصفات التكامل — مرجع الحزمة وقيود النواة.
- اختيار تكامل — مصفوفة القرار لحالات الاستخدام.