👩💻 Laravel Context: Умное хранение и протоколирование данных в запросеНачиная с Laravel 11+, фреймворк представил мощную функцию —
Context, позволяющую хранить временные данные в рамках одного запроса, задания или консольной команды. А в Laravel 12 она стала ещё лучше — теперь контекст автоматически внедряется в логи, HTTP-запросы, события и исключения.
Примеры использования в приложении Laravel:🛡
В middleware, сервисах или в любом другом месте вашего кодаuse Illuminate\Support\Facades\Context;
use Illuminate\Support\Str;
Context::add('trace_id', (string) Str::uuid());
Context::add('app_section', 'checkout');
Context::add('server', gethostname());
Context::add('currency', 'USD');
📄 В контроллерах, логах или событиях:Log::info('Payment started in section [{app_section}].', [
'user_id' => $user->id,
'amount' => $amount,
]);🌐 При отправке внешних HTTP-запросов:Http::withHeaders([
'X-Trace-Id' => Context::get('trace_id'),
])->post('https://api.payment.com/charge', [...]);
✨ Что можно хранить в `Context`?✅ ID текущего пользователя или ID трассировки
✅ Имя сервиса/модуля
✅ Метаданные среды (сервер, регион, локаль)
✅ Флаги бизнес-логики (валюта, роль, точка входа)
✅ Преимущества использования Context:✅ Глобальный доступ в рамках текущего запроса
✅ Безопасно и изолированно (не влияет на другие запросы)
✅ Автоматическая инъекция в логи, исключения, HTTP-вызовы, события и задания
✅ Идеально подходит для отладки, мониторинга и отслеживания запросов в больших или распределенных системах
📌 Думайте о
Context как о «временном хранилище данных», которое может использоваться во всех приложениях и не нужно повсеместно передавать переменные. Это чистый, современный способ отслеживания и управления данными, относящимися к конкретным запросам.
📱
@dev_notes_ru#Laravel #Context #tips