provideCollection($operation, $uriVariables, $context); case $operation instanceof Get: return $this->provideItem($operation, $uriVariables, $context); } } private function provideCollection(Operation $operation, array $uriVariables = [], array $context = []): object { $paginator = $this->collectionProvider->provide($operation, $uriVariables, $context); $items = new \ArrayObject(); foreach ($paginator->getIterator() as $item){ $items[] = new TraceOutput($item); } return new TraversablePaginator($items, $paginator->getCurrentPage(), $paginator->getItemsPerPage(), $paginator->getTotalItems()); } public function provideItem(Operation $operation, array $uriVariables = [], array $context = []): object|array|null { $item = $this->itemProvider->provide($operation, $uriVariables, $context); if (!$item) { throw new NotFoundHttpException('Trace not found'); } return new TraceOutput($item); } }