تخطَّ إلى المحتوى

ADR-005 - نمط وسيط PSR-15

ADR-005: نمط وسيط PSR-15 لـ XOOPS 4.0

Section titled “ADR-005: نمط وسيط PSR-15 لـ XOOPS 4.0”

اعتماد معالجات طلب خادم HTTP المتوافقة مع PSR-15 (الوسيط) لتحسين خط أنابيب معالجة الطلبات.


مقترح - قيد التقييم لإصدار XOOPS 4.0


يستخدم XOOPS 2.5 نهج معالجة الطلبات أحادي الكتلة:

// الحالي: المعالجة المتسلسلة
require_once 'mainfile.php';
// → تهيئة النواة
// → مصادقة المستخدم
// → تحميل الوحدة
// → عرض الصفحة
// كل شيء في تدفق واحد ومخاوف مختلطة

المشاكل مع النهج الحالي

Section titled “المشاكل مع النهج الحالي”
  1. مخاوف مختلطة - المصادقة والتسجيل والتوجيه متشابكة
  2. صعوبة الاختبار - يصعب اختبار خطوات معالجة الطلب بشكل فردي
  3. صعوبة التوسع - يمكن للوحدات فقط خطاف عبر التحميل المسبق/الأحداث
  4. فصل ضعيف - منطق معالجة الطلب متناثر في جميع أنحاء قاعدة الرموز
  5. غير قابل للتأليف - لا يمكن سهولة ربط أو إعادة ترتيب خطوات المعالجة

يحدد PSR-15 واجهة معيارية لوسيط HTTP:

<?php
interface RequestHandlerInterface {
public function handle(ServerRequestInterface $request): ResponseInterface;
}
interface MiddlewareInterface {
public function process(
ServerRequestInterface $request,
RequestHandlerInterface $handler
): ResponseInterface;
}

سلسلة الوسيط:

الطلب
[المسجل] → يسجل الطلب
[المصادقة] → التحقق من جلسة المستخدم
[CORS] → يتحقق من عبر الأصول
[الموجه] → يوزع إلى معالج
[المعالج] → ينشئ الرد
الرد

اعتماد مكدس وسيط PSR-15 لـ XOOPS 4.0

Section titled “اعتماد مكدس وسيط PSR-15 لـ XOOPS 4.0”

تطبيق خط أنابيب معالجة الطلب القائمة على الوسيط بعد معيار PSR-15.

graph TD
subgraph "Request Processing Pipeline"
A["طلب HTTP<br/>(PSR-7 ServerRequest)"]
B["مكدس الوسيط<br/>(PSR-15)"]
C["وسيط المسجل"]
D["وسيط الجلسة"]
E["وسيط المصادقة"]
F["وسيط CORS"]
G["وسيط الموجه"]
H["معالج<br/>(وحدة التحكم/الإجراء)"]
I["رد<br/>(PSR-7 Response)"]
end
A --> B
B --> C
C --> D
D --> E
E --> F
F --> G
G --> H
H --> I

  1. فصل المخاوف - كل وسيط يتعامل مع مسؤولية واحدة
  2. قابلية الاختبار - سهولة اختبار وحدة المكونات الفردية
  3. القابلية للتأليف - يمكن خلط الوسيط وإعادة ترتيبه
  4. التوافق مع المعايير - يستخدم معايير PSR-15 و PSR-7
  5. القابلية للتوسع - يمكن للوحدات بسهولة إضافة وسيط مخصص
  6. التصحيح - تدفق طلب واضح من خلال خط الأنابيب
  7. الأداء - يمكن تحسين طبقات وسيط محددة
  8. التشغيل البيني - يمكن استخدام وسيط PSR-15 من جهات خارجية
  1. منحنى التعلم - يجب على المطورين فهم PSR-15
  2. النفقات العامة للأداء - المزيد من استدعاءات الدالة في خط الأنابيب
  3. التعقيد - المزيد من الأجزاء المتحركة من النهج أحادي الكتلة
  4. جهد الهجرة - يتطلب إعادة صياغة الكود الموجود
  5. التبعيات - يتطلب مكتبة HTTP متوافقة مع PSR-7

الممارسات الأفضل للوسيط

Section titled “الممارسات الأفضل للوسيط”
  • اجعل الوسيط مركز على (مسؤولية واحدة)
  • استخدم عدم القابلية للتغيير (إنشاء طلب/رد جديد)
  • التعامل مع الأخطاء برشاقة
  • توثيق التبعيات
  • أضف تلميحات نوع
  • اختبر الوسيط
  • استخدم واجهات PSR-15 القياسية
  • لا تعدل كائنات الطلب/الرد المشتركة
  • لا تصل إلى العوامل الشاملة بشكل مباشر
  • لا تنشئ تبعيات على ترتيب الوسيط
  • لا تقبض على جميع الاستثناءات
  • لا تخلط منطق العمل مع الوسيط
  • لا تجعل الوسيط يفعل الكثير

  • ADR-001: العمارة المعيارية - الأساس
  • ADR-004: نظام الأمان - يستخدم الوسيط للمصادقة
  • ADR-006: حاوية الحقن - يمكن استخدام الوسيط


#xoops #adr #psr-15 #middleware #architecture #psr-7