Заметки разработчика
471 subscribers
672 photos
4 videos
1.17K links
Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов.

https://www.dev-notes.ru

@snakenf
Download Telegram
👩‍💻 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
Please open Telegram to view this post
VIEW IN TELEGRAM