get(ContextKeys::span()) ?? self::getInvalid(); } /** @inheritDoc */ final public static function getCurrent(): SpanInterface { return self::fromContext(Context::getCurrent()); } /** @inheritDoc */ final public static function getInvalid(): SpanInterface { if (null === self::$invalidSpan) { self::$invalidSpan = new NonRecordingSpan(SpanContext::getInvalid()); } return self::$invalidSpan; } /** @inheritDoc */ final public static function wrap(SpanContextInterface $spanContext): SpanInterface { if (!$spanContext->isValid()) { return self::getInvalid(); } return new NonRecordingSpan($spanContext); } /** @inheritDoc */ final public function activate(): ScopeInterface { return Context::getCurrent()->withContextValue($this)->activate(); } /** @inheritDoc */ final public function storeInContext(ContextInterface $context): ContextInterface { return $context->with(ContextKeys::span(), $this); } }