ทุก request ของ Laravel เข้ามาผ่าน front controller เพียงตัวเดียวคือ public/index.php, ถูกขับเคลื่อนโดย HTTP Kernel ผ่านสแตกของ และ ไปยัง , และคืนค่า — หลังจากนั้น middleware แบบ จะทำงาน
ทุก request ของ Laravel เข้ามาผ่าน front controller เพียงตัวเดียวคือ public/index.php, ถูกขับเคลื่อนโดย HTTP Kernel ผ่านสแตกของ และ ไปยัง , และคืนค่า — หลังจากนั้น middleware แบบ จะทำงาน
Responsepublic/index.php ── autoload + bootstrap แอป
▼
HTTP Kernel::handle($request)
▼
Bootstrappers ── env, config, providers (register + boot)
▼
Global middleware ── (TrustProxies, HandleCors, ...)
▼
Router dispatch ── จับคู่ route
▼
Route / group middleware ── (auth, throttle, verified, ...)
▼
Controller (หรือ closure) ── logic ของคุณ → คืนค่า Response
▼
Response ──▶ client
▼
Kernel::terminate ── terminable middleware (เช่น บันทึก session, logging)
index.php โหลด Composer autoload และ bootstrap container ของแอปพลิเคชันRequest และรัน bootstrappers: โหลด env + config, register และ boot service providers (นี่คือจุดที่ framework และ bindings ของคุณถูกเชื่อมต่อ)auth, throttle, verified) ทำงานก่อน controller; แต่ละตัวสามารถลัดวงจรได้Response (view, JSON, redirect) logic แบบ "after" ของ middleware จะทำงานขณะที่ response ไหลย้อนกลับออกไปKernel::terminate จะรัน terminable middleware สำหรับงานที่เลื่อนออกไป// app/Http/Middleware/Timing.php → 3/5. middleware
public function handle($request, Closure $next)
{
$request->attributes->set('started', microtime(true));
$response = $next($request); // ส่งต่อไปยัง layer ถัดไป / controller
$response->headers->set('X-Time', '...'); // logic แบบ "after"
return $response;
}
// routes/web.php → 4. routing (+ middleware)
Route::get('/items/{id}', [ItemController::class, 'show'])->middleware('auth');
// app/Http/Controllers/ItemController.php → 6. controller
public function show(int $id)
{
return response()->json(Item::findOrFail($id));
}
lifecycle ของ Laravel สร้างขึ้นรอบ service container และ middleware pipeline ดังนั้นการรู้ลำดับ — bootstrap/providers, แล้ว global middleware, แล้ว routing, แล้ว route middleware, แล้ว controller, แล้ว terminate — จะบอกคุณอย่างชัดเจนว่า auth, rate limiting, CORS และการ cleanup ควรอยู่ตรงไหน มันอธิบายว่าทำไม service ต้องถูก bind ใน provider ก่อนที่จะถูก inject, ทำไม throttle จึงปฏิเสธ request ก่อนที่ controller ของคุณจะทำงาน, และวิธีเลื่อนงานที่ช้าไปยัง terminable middleware เพื่อไม่ให้ผู้ใช้ต้องรอ
คลังคำถามสัมภาษณ์งาน IT พร้อมคำตอบโดยละเอียด — ตั้งแต่ระดับ Junior ถึง Senior
บริจาค