إنتقل إلى المحتوى الرئيسي

🔄 دورة حياة الطلب

كل طلب يبدأ من index.php

  1. تعريف الثوابت (ROOT، APP، CONFIG)
  2. تحميل الدوال المساعدة
  3. التحقق مما إذا كان مثبتاً (هل ملف config/database.php موجود؟)
  4. إذا لم يكن مثبتاً → إعادة التوجيه إلى /install/
  5. تحميل تكوين قاعدة البيانات + المساعدات، بدء الجلسة
  6. حساب مسار الطلب (يتعامل مع التثبيت في المجلدات الفرعية)
  7. التوجيه عبر app/router.php

الموجه

app/router.php هو جدول توجيه مسطح لمطابقة الأنماط. يتم تجميع الأنماط إلى تعبيرات نمطية ومطابقتها مع مسار الطلب. يتم تمرير مجموعات الالتقاط كوسائط لطريقة المتحكم.


المصادقة

تستدعي معظم المتحكمات require_auth() التي تعيد توجيه المستخدمين غير المصادق عليهم إلى /login. تستخدم نقاط النهاية المخصصة للمسؤولين require_admin() التي تُرجع JSON 403.

يتم ملء الجلسات عند تسجيل الدخول بـ user_id، workspace_id، role، ويتم تجديدها لمنع تثبيت الجلسة.


اتصال قاعدة البيانات

يتم إنشاء اتصال PDO بشكل كسول عند أول استعلام (singleton). يستخدم ERRMODE_EXCEPTION وعبارات محضرة حقيقية (EMULATE_PREPARES = false).


صيغ الاستجابة

  • صفحات HTML: يحدد المتحكم $page ويتضمن layout.php
  • واجهات JSON: json_response() يحدد Content-Type، يطبع JSON، وينهي
  • تدفق SSE: حلقة مستمرة مع text/event-stream، ping كل ثانيتين، تنتهي بعد 55 ثانية