Share Request Data Cleanly in Laravel Using Context
Laravel’s Context feature allows developers to share data across different parts of an application during a single request lifecycle. This article explains how Context works with a simple real-world example.
Real Project Example: Tracking Request ID
Imagine you want every log entry to include a unique request ID.
Step 1: Store It Once (Middleware)
use Illuminate\Support\Facades\Context;
Context::add('request_id', uniqid());
Step 2: Access It Anywhere
$requestId = Context::get('request_id');
Log::info('Order created', [
'request_id' => $requestId
]);
No need to pass $requestId manually to every method.
Why Context Is Useful It:
- Reduces parameter clutter
- Keeps request-level data centralized
- Improves logging and tracing
- Makes multi-tenant or tracking systems cleaner
When to Use Context
Use it when:
- Data belongs to the request lifecycle
- Multiple layers need the same value
- You want cleaner service methods
Avoid it for:
- Long-term storage
- Database persistence