generators[] = $generator; } /** * {@inheritdoc} */ public function generate(FeedInterface $feed, User $user, $format, $page = null, $renew = false) { if (null === $generator = $this->findGenerator($feed)) { throw new InvalidArgumentException(sprintf('Unable to find a valid generator for %s', get_class($feed))); } return $generator->generate($feed, $user, $format, $page); } /** * {@inheritdoc} */ public function generatePublic(FeedInterface $feed, $format, $page = null) { if (null === $generator = $this->findGenerator($feed)) { throw new InvalidArgumentException(sprintf('Unable to find a valid generator for %s', get_class($feed))); } return $generator->generatePublic($feed, $format, $page); } /** * {@inheritdoc} */ public function supports(FeedInterface $feed) { return null !== $this->findGenerator($feed); } /** * @param FeedInterface $feed * @return LinkGeneratorInterface|null */ private function findGenerator(FeedInterface $feed) { foreach ($this->generators as $generator) { if ($generator->supports($feed)) { return $generator; } } return null; } }