Field Manual PHP / Laravel reference
← Laravel

Dependency injection

Laravel’s container supplies concrete constructor or method dependencies.

What it is

Laravel’s container supplies concrete constructor or method dependencies.

When to use it

Use to make collaboration explicit without manually wiring each controller.

Syntax

public function __construct(private OrderService $orders) {}

Example

class OrderController extends Controller
{
    public function __construct(private OrderService $orders) {}
    public function store(StoreOrderRequest $request)
    {
        $order = $this->orders->place($request->user(), $request->validated());
        return response()->json(["id" => $order->id], 201);
    }
}

Common mistakes

Concrete classes often auto-resolve; interfaces need container bindings only when justified.

Related topics

SQL injection