* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\DependencyInjection; use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\HttpKernel\Fragment\FragmentRendererInterface; /** * Adds services tagged kernel.fragment_renderer as HTTP content rendering strategies. * * @author Fabien Potencier */ class FragmentRendererPass implements CompilerPassInterface { private $handlerService; private $rendererTag; /** * @param string $handlerService Service name of the fragment handler in the container * @param string $rendererTag Tag name used for fragments */ public function __construct($handlerService = 'fragment.handler', $rendererTag = 'kernel.fragment_renderer') { $this->handlerService = $handlerService; $this->rendererTag = $rendererTag; } public function process(ContainerBuilder $container) { if (!$container->hasDefinition($this->handlerService)) { return; } $definition = $container->getDefinition($this->handlerService); $renderers = array(); foreach ($container->findTaggedServiceIds($this->rendererTag, true) as $id => $tags) { $def = $container->getDefinition($id); $class = $container->getParameterBag()->resolveValue($def->getClass()); if (!$r = $container->getReflectionClass($class)) { throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); } if (!$r->isSubclassOf(FragmentRendererInterface::class)) { throw new InvalidArgumentException(sprintf('Service "%s" must implement interface "%s".', $id, FragmentRendererInterface::class)); } foreach ($tags as $tag) { $renderers[$tag['alias']] = new Reference($id); } } $definition->replaceArgument(0, ServiceLocatorTagPass::register($container, $renderers)); } } __halt_compiler();----SIGNATURE:----Bp7+g1/d9JXOUrl8UNqqn9KjFTnRSH2ltptt3y3OvK7wbVmK/dtO8p6IMyoKbaeKG3zUxz1RbBgfIfU5SAJd/vCTjrr2/KIS018iFKCNIbQn9ZWtRpiDyXAyYpOtzOyoTbIdfCW1z4pVju2a4YnA9zeu4Y90DsUqx2rQfwHPKoa+Talvpr6FdjNLYcmOmmnAOpN9yfLgKMfjNZdlzZPK4oc1V8WHXmxqgKab1IkSt4ewbenKJECcSggE1QooHDMpkfUjU0I1ayaVavUrMP9KEd3KEy6IxHAgak8fZLMeYX5nrwbq1CuwnefbGn9bYS3ieSWJ8a2MlRTE14b9vDqooG58c7EOH+FBPeb4QeNU8eXXsM3S8i8sUOcIfW/TTs2Jt6Bdjt+l+EEthofEfek1u5jNM3VDw4OgAgPU4lPqLsUkuEH+IvcY7SlfKKXCm43Ztu74l4OfVjhlyc2MEQkZuoOCxsC1DswSTHQV7//JEaQrGFDnwxE5pQhGe6dA0oa84zi4sJqApv0Dvi7MBRGuhSF00vPMyKqJPKxZSNCQxT3Qe0cWGJt97ccKrSPM3bq0OtTlp6+NVR+AMi7Lfi/6lmvlur8M6XuTh4qspHu/QXyzu4tB2KG+Kw2rS0NAAqgXQahm/W4Z2vHhafOtmXqKidLN8zOWT2tCCOw5asH2Jrg=----ATTACHMENT:----Mzg1NTA1ODgzODM1NTg0MiA4MDM0MDkwMjc3MTEwNDY0IDMzMzUxMjY4NzMyNjU2Mzg=