ContainerAwareProvider.php 1015B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace Knp\Bundle\MenuBundle\Renderer;
  3. use Knp\Menu\Renderer\RendererProviderInterface;
  4. use Symfony\Component\DependencyInjection\ContainerInterface;
  5. class ContainerAwareProvider implements RendererProviderInterface
  6. {
  7. private $container;
  8. private $rendererIds;
  9. private $defaultRenderer;
  10. public function __construct(ContainerInterface $container, $defaultRenderer, array $rendererIds)
  11. {
  12. $this->container = $container;
  13. $this->rendererIds = $rendererIds;
  14. $this->defaultRenderer = $defaultRenderer;
  15. }
  16. public function get($name = null)
  17. {
  18. if (null === $name) {
  19. $name = $this->defaultRenderer;
  20. }
  21. if (!isset($this->rendererIds[$name])) {
  22. throw new \InvalidArgumentException(sprintf('The renderer "%s" is not defined.', $name));
  23. }
  24. return $this->container->get($this->rendererIds[$name]);
  25. }
  26. public function has($name)
  27. {
  28. return isset($this->rendererIds[$name]);
  29. }
  30. }