providers = [$fyydService, $itunesService]; } /** * @return PodcastData[] */ public function search(string $value): array { $podcasts = []; foreach ($this->providers as $provider) { try { $podcasts = [...$podcasts, ...$provider->search($value)]; } catch (\Exception $e) { $this->logger->error($e->getMessage(), $e->getTrace()); } } usort($podcasts, fn (PodcastData $a, PodcastData $b) => $b->getFetchedAtUnix() <=> $a->getFetchedAtUnix()); return array_values( array_intersect_key( $podcasts, array_unique( array_map( fn (PodcastData $feed) => $feed->getLink(), array_filter($podcasts, fn (PodcastData $feed) => $feed->getLink()) ) ) ) ); } }