OTEL Tracing API * spec for recommended naming conventions. * @return SpanInterface * @throws PreconditionException If no span was active */ public function createSpan( string $spanName ): SpanInterface; /** * Create a new root span, i.e. a span with no parent that forms the basis for a new trace. * * @param string $spanName The descriptive name of this span. * Refer to the OTEL Tracing API * spec for recommended naming conventions. * @return SpanInterface */ public function createRootSpan( string $spanName ): SpanInterface; /** * Create a span with the given name and parent. * * @param string $spanName The descriptive name of this span. * Refer to the OTEL Tracing API * spec for recommended naming conventions. * @param SpanContext $parentSpanContext Context of the parent span this span should be associated with. * @return SpanInterface */ public function createSpanWithParent( string $spanName, SpanContext $parentSpanContext ): SpanInterface; /** * Create a span from a carrier (e.g. HTTP headers) that was extracted from a remote call. * The configured implementation of ContextPropagatorInterface will be used to extract the span context. * If no span context could be extracted, a new root span will be created. * * @param string $spanName The descriptive name of this span. * Refer to the OTEL Tracing API * spec for recommended naming conventions. * @param array $carrier The carrier data extracted from the remote call. * @return SpanInterface */ public function createRootSpanFromCarrier( string $spanName, array $carrier ): SpanInterface; /** * Shut down this tracer and export collected trace data. * @return void */ public function shutdown(): void; }