ADR-005 - نمط وسيط PSR-15
ADR-005: نمط وسيط PSR-15 لـ XOOPS 4.0
Section titled “ADR-005: نمط وسيط PSR-15 لـ XOOPS 4.0”اعتماد معالجات طلب خادم HTTP المتوافقة مع PSR-15 (الوسيط) لتحسين خط أنابيب معالجة الطلبات.
الحالة
Section titled “الحالة”مقترح - قيد التقييم لإصدار XOOPS 4.0
السياق
Section titled “السياق”النهج الحالي
Section titled “النهج الحالي”يستخدم XOOPS 2.5 نهج معالجة الطلبات أحادي الكتلة:
// الحالي: المعالجة المتسلسلةrequire_once 'mainfile.php';// → تهيئة النواة// → مصادقة المستخدم// → تحميل الوحدة// → عرض الصفحة
// كل شيء في تدفق واحد ومخاوف مختلطةالمشاكل مع النهج الحالي
Section titled “المشاكل مع النهج الحالي”- مخاوف مختلطة - المصادقة والتسجيل والتوجيه متشابكة
- صعوبة الاختبار - يصعب اختبار خطوات معالجة الطلب بشكل فردي
- صعوبة التوسع - يمكن للوحدات فقط خطاف عبر التحميل المسبق/الأحداث
- فصل ضعيف - منطق معالجة الطلب متناثر في جميع أنحاء قاعدة الرموز
- غير قابل للتأليف - لا يمكن سهولة ربط أو إعادة ترتيب خطوات المعالجة
ما هو وسيط PSR-15؟
Section titled “ما هو وسيط PSR-15؟”يحدد PSR-15 واجهة معيارية لوسيط HTTP:
<?phpinterface RequestHandlerInterface { public function handle(ServerRequestInterface $request): ResponseInterface;}
interface MiddlewareInterface { public function process( ServerRequestInterface $request, RequestHandlerInterface $handler ): ResponseInterface;}سلسلة الوسيط:
الطلب ↓[المسجل] → يسجل الطلب ↓[المصادقة] → التحقق من جلسة المستخدم ↓[CORS] → يتحقق من عبر الأصول ↓[الموجه] → يوزع إلى معالج ↓[المعالج] → ينشئ الرد ↓الردالقرار
Section titled “القرار”اعتماد مكدس وسيط PSR-15 لـ XOOPS 4.0
Section titled “اعتماد مكدس وسيط PSR-15 لـ XOOPS 4.0”تطبيق خط أنابيب معالجة الطلب القائمة على الوسيط بعد معيار PSR-15.
نظرة عامة على العمارة
Section titled “نظرة عامة على العمارة”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العواقب
Section titled “العواقب”التأثيرات الإيجابية
Section titled “التأثيرات الإيجابية”- فصل المخاوف - كل وسيط يتعامل مع مسؤولية واحدة
- قابلية الاختبار - سهولة اختبار وحدة المكونات الفردية
- القابلية للتأليف - يمكن خلط الوسيط وإعادة ترتيبه
- التوافق مع المعايير - يستخدم معايير PSR-15 و PSR-7
- القابلية للتوسع - يمكن للوحدات بسهولة إضافة وسيط مخصص
- التصحيح - تدفق طلب واضح من خلال خط الأنابيب
- الأداء - يمكن تحسين طبقات وسيط محددة
- التشغيل البيني - يمكن استخدام وسيط PSR-15 من جهات خارجية
التأثيرات السلبية
Section titled “التأثيرات السلبية”- منحنى التعلم - يجب على المطورين فهم PSR-15
- النفقات العامة للأداء - المزيد من استدعاءات الدالة في خط الأنابيب
- التعقيد - المزيد من الأجزاء المتحركة من النهج أحادي الكتلة
- جهد الهجرة - يتطلب إعادة صياغة الكود الموجود
- التبعيات - يتطلب مكتبة HTTP متوافقة مع PSR-7
الممارسات الأفضل للوسيط
Section titled “الممارسات الأفضل للوسيط”- اجعل الوسيط مركز على (مسؤولية واحدة)
- استخدم عدم القابلية للتغيير (إنشاء طلب/رد جديد)
- التعامل مع الأخطاء برشاقة
- توثيق التبعيات
- أضف تلميحات نوع
- اختبر الوسيط
- استخدم واجهات PSR-15 القياسية
لا تفعل
Section titled “لا تفعل”- لا تعدل كائنات الطلب/الرد المشتركة
- لا تصل إلى العوامل الشاملة بشكل مباشر
- لا تنشئ تبعيات على ترتيب الوسيط
- لا تقبض على جميع الاستثناءات
- لا تخلط منطق العمل مع الوسيط
- لا تجعل الوسيط يفعل الكثير
القرارات ذات الصلة
Section titled “القرارات ذات الصلة”- ADR-001: العمارة المعيارية - الأساس
- ADR-004: نظام الأمان - يستخدم الوسيط للمصادقة
- ADR-006: حاوية الحقن - يمكن استخدام الوسيط
المراجع
Section titled “المراجع”معايير PSR
Section titled “معايير PSR”#xoops #adr #psr-15 #middleware #architecture #psr-7