Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Context Laravel Package

open-telemetry/context

OpenTelemetry Context for PHP: immutable execution-scoped context propagation. Activate a context to create a scope and safely detach it (try/finally). Includes debug scope warnings, and optional async support for fibers and event loops.

View on GitHub
Deep Wiki
Context7

Releases Source Mirror Latest Version Stable

OpenTelemetry Context

Immutable execution scoped propagation mechanism, for further details see opentelemetry-specification.

Installation

composer require open-telemetry/context

Usage

Implicit propagation

$context = Context::getCurrent();
// modify context
$scope = $context->activate();
try {
    // run within new context
} finally {
    $scope->detach();
}

It is recommended to use a try-finally statement after ::activate() to ensure that the created scope is properly ::detach()ed.

Debug scopes

By default, scopes created by ::activate() warn on invalid and missing calls to ::detach() in non-production environments. This feature can be disabled by setting the environment variable OTEL_PHP_DEBUG_SCOPES_DISABLED to a truthy value. Disabling is only recommended for applications using exit / die to prevent unavoidable notices.

Async applications

Fiber support - automatic context propagation to newly created fibers

Requires an NTS build, ext-ffi, and setting the environment variable OTEL_PHP_FIBERS_ENABLED to a truthy value. Additionally vendor/autoload.php has to be preloaded for non-CLI SAPIs if ffi.enable is set to preload.

Event loops

Event loops have to restore the original context on callback execution. A basic implementation could look like the following, though implementations should avoid keeping unnecessary references to arguments if possible:

function bindContext(Closure $closure): Closure {
    $context = Context::getCurrent();
    return static function (mixed ...$args) use ($closure, $context): mixed {
        $scope = $context->activate();
        try {
            return $closure(...$args);
        } finally {
            $scope->detach();
        }
    };
}

Contributing

This repository is a read-only git subtree split. To contribute, please see the main OpenTelemetry PHP monorepo.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport