Context

Inject a value from the application context

Description: Injects a value from the application's shared context.

Namespace: Illuminate\Container\Attributes\Context

Added in: Laravel 12.15

Usage

use Illuminate\Container\Attributes\Context;

// Before:
use Illuminate\Support\Facades\Context;
Context::add('trace_id', 'abc-123');
$traceId = Context::get('trace_id');

use Illuminate\Container\Attributes\Context;

// After:
class RequestLogger
{
    public function __construct(
        #[Context('trace_id')] private readonly ?string $traceId
    ) {}

    public function log(string $message): void
    {
        logger()->info($message, ['trace_id' => $this->traceId]);
    }
}

Also supports hidden context:

#[Context('secret_key', hidden: true)] private readonly ?string $secret