exporterFactory = $exporterFactory ?: new ExporterFactory(); $this->samplerFactory = $samplerFactory ?: new SamplerFactory(); $this->spanProcessorFactory = $spanProcessorFactory ?: new SpanProcessorFactory(); } public function create(): TracerProviderInterface { if (Sdk::isDisabled()) { return new NoopTracerProvider(); } try { $exporter = $this->exporterFactory->create(); } catch (\Throwable $t) { self::logWarning('Unable to create exporter', ['exception' => $t]); $exporter = null; } try { $sampler = $this->samplerFactory->create(); } catch (\Throwable $t) { self::logWarning('Unable to create sampler', ['exception' => $t]); $sampler = null; } try { $spanProcessor = $this->spanProcessorFactory->create($exporter); } catch (\Throwable $t) { self::logWarning('Unable to create span processor', ['exception' => $t]); $spanProcessor = null; } return new TracerProvider( $spanProcessor, $sampler, ); } }