Request-cycle

Laravel Request Lifecycle Explained Like a Restaurant 🍽️

Understanding Laravel’s request lifecycle can feel abstract. So let’s imagine your Laravel application is a restaurant. Here’s how everything works.

🏪 1. Guest Enters the Restaurant (HTTP Request)

A guest walks into the restaurant.

This is:

BrowserHTTP Requestpublic/index.php

Laravel boots up the application (like opening the restaurant for service).

The Service Container is prepared — like getting the restaurant infrastructure ready.

But no food is cooked yet.


🚪 2. Gatekeeper Directs the Guest (Router)

At the entrance, there’s a gatekeeper.

This is Laravel’s Router.

The gatekeeper checks:

  • What does the guest want?
  • Which section should they go to?
  • Or should they be kicked out (404)?

Example:

Route::get('/soup', [FoodController::class, 'chineseSoup']);

If the guest asks for soup:

👉 The gatekeeper sends them to the Soup Section
If that section doesn’t exist:

❌ 404 — “Sorry, we don’t serve that.”

At this stage, the restaurant now knows:

  • Which controller
  • Which method

Only now can cooking begin.


🛂 3. Security Checks the Guest (Middleware)

Before the guest sits down, security checks:

  • Is this guest logged in?
  • Is this guest banned?
  • Do they have VIP access?

This is Middleware.

Examples in Laravel:

  • auth
  • throttle
  • verified

If security rejects them:

🚫 Request ends here.

If approved:

👉 They are allowed to proceed.


🪑 4. Preparing the Table (Service Container Builds Controller)

Now the guest is guided to a table.

But before they sit:

  • Table is cleaned
  • Fresh tissues placed
  • Water jug filled
  • Plates arranged

This preparation is the Service Container creating the Controller instance.

Example controller:

class FoodController
{
    public function __construct(SoupService $service)
    {
        $this->service = $service;
    }
}

The container says:

“To prepare this table, I need SoupService.”

So it creates:

  • SoupService
  • And anything SoupService needs

Just like setting the table properly before the guest even orders.


🧾 5. Guest Places the Order (Controller Method)

The guest now says:

“I want Chinese soup.”

This is:

public function chineseSoup(Request $request)

Now we know exactly what dish is required.


👨‍🍳 6. Kitchen Prepares Ingredients (Dependency Injection)

Before the main chef cooks:

Kitchen helpers prepare:

  • Water
  • Pan
  • Cut vegetables
  • Masala
  • Oil

These helpers are Dependency Injection.

They prepare everything the chef needs before he starts cooking.

Laravel does the same:

  • It sees method parameters
  • It resolves dependencies
  • It injects them automatically

So the chef never goes looking for ingredients.

They’re already there.


🔥 7. Main Chef Cooks (Controller Logic)

Now the main chef starts cooking.

This is your controller method executing business logic.

But the chef doesn’t do everything alone.


🧑‍🍳 8. Sauce Chef (Service Layer)

To avoid overloading the main chef:

The Sauce Chef prepares sauces and special mixes.

This is your:

Service Layer

Instead of putting all logic inside the controller, you move heavy logic into services.

Good practice:

$this->service->prepareChineseSoup();

Now the controller stays clean.


🧊 9. Fridge & Storage (Model & Database)

If ingredients are needed:

  • Vinegar
  • Salt
  • Stored vegetables

They are fetched from the fridge.

This is your:

ModelDatabase

Example:

Ingredient::find($id);

Models fetch raw data.


🍜 10. Dish is Served (View / Response)

Once the soup is ready:

It is plated nicely and served to the guest.

This is:

return view('soup', $data);

The View presents the final output.

The guest enjoys the meal.

Response sent back to browser.


🔁 Full Restaurant Flow (Mapped to Laravel)

RestaurantLaravel
Guest entersHTTP Request
GatekeeperRouter
SecurityMiddleware
Table preparationContainer builds controller
Order placedController method
Kitchen helpersDependency Injection
Main chefController logic
Sauce chefService layer
FridgeModel / Database
Served dishView / Response


In Laravel:

  1. Request arrives
  2. Router decides destination
  3. Middleware checks
  4. Container builds controller
  5. Dependencies are injected
  6. Controller executes
  7. Services & models assist
  8. Response is returned