*/ private array $processors = []; public function __construct(SpanProcessorInterface ...$spanProcessors) { foreach ($spanProcessors as $processor) { $this->addSpanProcessor($processor); } } public function addSpanProcessor(SpanProcessorInterface $processor): void { $this->processors[] = $processor; } /** @return list */ public function getSpanProcessors(): array { return $this->processors; } /** @inheritDoc */ public function onStart(ReadWriteSpanInterface $span, ContextInterface $parentContext): void { foreach ($this->processors as $processor) { $processor->onStart($span, $parentContext); } } /** @inheritDoc */ public function onEnd(ReadableSpanInterface $span): void { foreach ($this->processors as $processor) { $processor->onEnd($span); } } /** @inheritDoc */ public function shutdown(?CancellationInterface $cancellation = null): bool { $result = true; foreach ($this->processors as $processor) { $result = $result && $processor->shutdown(); } return $result; } /** @inheritDoc */ public function forceFlush(?CancellationInterface $cancellation = null): bool { $result = true; foreach ($this->processors as $processor) { $result = $result && $processor->forceFlush(); } return $result; } }