Featured blog image
149 كلمة 1 دقيقة للقراءة

دورة حياة تطبيق Laravel (Laravel Life Cycle)

جدول المحتويات

في هذه المقالة نمر خطوة بخطوة على <strong>دورة حياة الطلب داخل إطار عمل Laravel</strong> — من وصول الطلب إلى الخادم وحتى عودة الاستجابة للمتصفح. فهم هذه الدورة مهم جداً لأي مطور Laravel لأنّه يوضح أين ولماذا تعمل الأشياء (مثل الـ middleware، الـ providers، والـ controllers).


استقبال الطلب — public/index.php

كل طلب HTTP يمر أولاً عبر ملف public/index.php الذي يحمل الـ autoloader ويبدأ التطبيق عن طريق استدعاء الـ Kernel. هنا يتم إعداد الـ Application container وتحميل الـ service providers.


تحميل الخدمة (Service Providers)

قبل وصول الطلب للـ Router، تُحمّل Service Providers المسجَّلة في config/app.php. الـ providers تقوم بتسجيل الخدمات، إعدادات الحاوية (IoC container)، وربط الواجهات بالتنفيذات.


الـ HTTP Kernel و الـ Middleware

يُمرر الطلب إلى App\Http\Kernel الذي يطبق Middleware العالمية وMiddleware الخاص بالـ route. الـ middleware يمكنه تعديل الطلب، التحقق من الصلاحيات، عمل ضبط (throttling)، وغيرها.


الـ Router وتطابق الـ Route

بعد تجاوز الـ middleware الأولي، يطابق الـ Router المسار مع القواعد في routes/web.php أو routes/api.php. إن تم العثور على تطابق يُستدعى الـ Controller أو Closure المعرّف.


Controller / Action

الـ Controller يستلم الطلب ويطبّق منطق التطبيق: استدعاء Services، Validation، التعامل مع الملفات، وغيرها. هنا أيضاً يمكن استدعاء الأحداث (Events) أو إرسال وظائف إلى الطابور (Jobs).


Model و Eloquent

عندما يحتاج التطبيق لبيانات يُستخدم Eloquent أو Query Builder للتفاعل مع القاعدة. نماذج Eloquent تمثل الجداول وتوفّر طرق سهلة للاستعلام والعلاقات.


توليد Response

بعد تجهيز البيانات، يقوم الكود بإرجاع Response — قد يكون View (HTML)، JSON، Redirect، أو Download. الـ Response يمر مرة أخرى عبر الـ middleware (المخرجات) ثم يُرسَل إلى الخادم ليعود للمستخدم.


مثال مبسّط للتدفق (pseudo-code)

// public/index.php
$app = require __DIR__.'/../bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle($request = Illuminate\Http\Request::capture());
// ... يمر عبر middleware -> router -> controller -> model
$response->send();
$kernel->terminate($request, $response);


نقاط مهمة للمطورين

  • Service Providers: مكان تسجيل الخدمات وتهيئة الحزم.
  • Middleware: مناسب لمهام متكررة مثل المصادقة والتحقق ومراقبة الأداء.
  • Service Container: استخدم الـ dependency injection بدلاً من الـ facades عندما تريد اختبار أسهل.
  • Events & Listeners: استخدمها لفصل المسؤوليات (decoupling) وإرسال المهام إلى الطابور.
  • Caching: وضع الكاش في الطبقات المناسبة يقلل طلبات DB ويُسرّع الأداء.

خلاصة

دورة حياة الطلب في Laravel مرتبة وواضحة: استقبال الطلب ← تحميل الخدمات ← middleware ← router  controller ← model/DB ← response ←. بمعرفة كل نقطة تستطيع تحسين الأداء، كتابة اختبارات أفضل، وتصميم تطبيقات أقوى


شارك الآن ؟
تواصل معي