comparison vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents 4c8ae668cc8c
children 129ea1e6d783
comparison
equal deleted inserted replaced
13:5fb285c0d0e3 14:1fec387a4317
9 * file that was distributed with this source code. 9 * file that was distributed with this source code.
10 */ 10 */
11 11
12 namespace Symfony\Component\HttpKernel\DependencyInjection; 12 namespace Symfony\Component\HttpKernel\DependencyInjection;
13 13
14 use Symfony\Component\DependencyInjection\ContainerInterface; 14 use Psr\Container\ContainerInterface;
15 use Symfony\Component\HttpFoundation\RequestStack; 15 use Symfony\Component\HttpFoundation\RequestStack;
16 use Symfony\Component\HttpKernel\Fragment\FragmentHandler; 16 use Symfony\Component\HttpKernel\Fragment\FragmentHandler;
17 17
18 /** 18 /**
19 * Lazily loads fragment renderers from the dependency injection container. 19 * Lazily loads fragment renderers from the dependency injection container.
21 * @author Fabien Potencier <fabien@symfony.com> 21 * @author Fabien Potencier <fabien@symfony.com>
22 */ 22 */
23 class LazyLoadingFragmentHandler extends FragmentHandler 23 class LazyLoadingFragmentHandler extends FragmentHandler
24 { 24 {
25 private $container; 25 private $container;
26 /**
27 * @deprecated since version 3.3, to be removed in 4.0
28 */
26 private $rendererIds = array(); 29 private $rendererIds = array();
30 private $initialized = array();
27 31
28 /** 32 /**
29 * Constructor.
30 *
31 * @param ContainerInterface $container A container 33 * @param ContainerInterface $container A container
32 * @param RequestStack $requestStack The Request stack that controls the lifecycle of requests 34 * @param RequestStack $requestStack The Request stack that controls the lifecycle of requests
33 * @param bool $debug Whether the debug mode is enabled or not 35 * @param bool $debug Whether the debug mode is enabled or not
34 */ 36 */
35 public function __construct(ContainerInterface $container, RequestStack $requestStack, $debug = false) 37 public function __construct(ContainerInterface $container, RequestStack $requestStack, $debug = false)
42 /** 44 /**
43 * Adds a service as a fragment renderer. 45 * Adds a service as a fragment renderer.
44 * 46 *
45 * @param string $name The service name 47 * @param string $name The service name
46 * @param string $renderer The render service id 48 * @param string $renderer The render service id
49 *
50 * @deprecated since version 3.3, to be removed in 4.0
47 */ 51 */
48 public function addRendererService($name, $renderer) 52 public function addRendererService($name, $renderer)
49 { 53 {
54 @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0.', __METHOD__), E_USER_DEPRECATED);
55
50 $this->rendererIds[$name] = $renderer; 56 $this->rendererIds[$name] = $renderer;
51 } 57 }
52 58
53 /** 59 /**
54 * {@inheritdoc} 60 * {@inheritdoc}
55 */ 61 */
56 public function render($uri, $renderer = 'inline', array $options = array()) 62 public function render($uri, $renderer = 'inline', array $options = array())
57 { 63 {
64 // BC 3.x, to be removed in 4.0
58 if (isset($this->rendererIds[$renderer])) { 65 if (isset($this->rendererIds[$renderer])) {
59 $this->addRenderer($this->container->get($this->rendererIds[$renderer])); 66 $this->addRenderer($this->container->get($this->rendererIds[$renderer]));
67 unset($this->rendererIds[$renderer]);
60 68
61 unset($this->rendererIds[$renderer]); 69 return parent::render($uri, $renderer, $options);
70 }
71
72 if (!isset($this->initialized[$renderer]) && $this->container->has($renderer)) {
73 $this->addRenderer($this->container->get($renderer));
74 $this->initialized[$renderer] = true;
62 } 75 }
63 76
64 return parent::render($uri, $renderer, $options); 77 return parent::render($uri, $renderer, $options);
65 } 78 }
66 } 79 }