/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
src/Illuminate/Log/Context/ContextServiceProvider.php
58 строк
2 KB
Jarryd Tilbrook
Pass Laravel context through with schedule tasks (#57918)
26 ноя 2025, 17:30
Не верифицирован
26 ноя 2025, 17:30
e17bf44
Код
Авторство
О чём код?
<?php namespace Illuminate\Log\Context; use Illuminate\Contracts\Log\ContextLogProcessor as ContextLogProcessorContract; use Illuminate\Queue\Events\JobProcessing; use Illuminate\Queue\Queue; use Illuminate\Support\Env; use Illuminate\Support\Facades\Context; use Illuminate\Support\ServiceProvider; class ContextServiceProvider extends ServiceProvider { /** * Register the service provider. * * @return void */ public function register() { $this->app->scoped(Repository::class); if ($this->app->runningInConsole()) { $this->app->resolving(Repository::class, function (Repository $repository) { $context = Env::get('__LARAVEL_CONTEXT'); if ($context && $context = json_decode($context, associative: true)) { $repository->hydrate($context); } }); } $this->app->bind(ContextLogProcessorContract::class, fn () => new ContextLogProcessor()); } /** * Boot the application services. * * @return void */ public function boot() { Queue::createPayloadUsing(function ($connection, $queue, $payload) { /** @phpstan-ignore staticMethod.notFound */ $context = Context::dehydrate(); return $context === null ? $payload : [ ...$payload, 'illuminate:log:context' => $context, ]; }); $this->app['events']->listen(function (JobProcessing $event) { /** @phpstan-ignore staticMethod.notFound */ Context::hydrate($event->job->payload()['illuminate:log:context'] ?? null); }); } }