vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php line 49

Open in your IDE?
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\HttpKernel\DependencyInjection;
  11. use Psr\Container\ContainerInterface;
  12. use Symfony\Component\HttpFoundation\RequestStack;
  13. use Symfony\Component\HttpKernel\Fragment\FragmentHandler;
  14. /**
  15. * Lazily loads fragment renderers from the dependency injection container.
  16. *
  17. * @author Fabien Potencier <fabien@symfony.com>
  18. */
  19. class LazyLoadingFragmentHandler extends FragmentHandler
  20. {
  21. private $container;
  22. /**
  23. * @var array<string, bool>
  24. */
  25. private $initialized = [];
  26. public function __construct(ContainerInterface $container, RequestStack $requestStack, bool $debug = false)
  27. {
  28. $this->container = $container;
  29. parent::__construct($requestStack, [], $debug);
  30. }
  31. /**
  32. * {@inheritdoc}
  33. */
  34. public function render($uri, string $renderer = 'inline', array $options = [])
  35. {
  36. if (!isset($this->initialized[$renderer]) && $this->container->has($renderer)) {
  37. $this->addRenderer($this->container->get($renderer));
  38. $this->initialized[$renderer] = true;
  39. }
  40. return parent::render($uri, $renderer, $options);
  41. }
  42. }