function WithSpanHandler::pre
@psalm-suppress ArgumentTypeCoercion
File
-
vendor/
open-telemetry/ api/ Instrumentation/ WithSpanHandler.php, line 21
Class
- WithSpanHandler
- Generic pre-hook and post-hook handlers for attribute-based auto instrumentation
Namespace
OpenTelemetry\API\InstrumentationCode
public static function pre(mixed $target, array $params, ?string $class, string $function, ?string $filename, ?int $lineno, ?array $span_args = [], ?array $attributes = []) : void {
static $instrumentation;
$instrumentation ??= new CachedInstrumentation(name: 'io.opentelemetry.php.with-span', schemaUrl: 'https://opentelemetry.io/schemas/1.25.0');
$name = $span_args['name'] ?? null;
if ($name === null) {
$name = empty($class) ? $function : sprintf('%s::%s', $class, $function);
}
$kind = $span_args['span_kind'] ?? SpanKind::KIND_INTERNAL;
$span = $instrumentation->tracer()
->spanBuilder($name)
->setSpanKind($kind)
->setAttribute('code.function', $function)
->setAttribute('code.namespace', $class)
->setAttribute('code.filepath', $filename)
->setAttribute('code.lineno', $lineno)
->setAttributes($attributes ?? [])
->startSpan();
$context = $span->storeInContext(Context::getCurrent());
Context::storage()->attach($context);
}