eZ\Bundle\EzPublishCoreBundle\DependencyInjection\Compiler\FragmentPass::process PHP Метод

process() публичный Метод

public process ( ContainerBuilder $container )
$container Symfony\Component\DependencyInjection\ContainerBuilder
    public function process(ContainerBuilder $container)
    {
        if (!($container->hasDefinition('fragment.listener') && $container->hasDefinition('ezpublish.decorated_fragment_renderer'))) {
            return null;
        }
        $fragmentListenerDef = $container->findDefinition('fragment.listener');
        $fragmentListenerDef->setFactory([new Reference('ezpublish.fragment_listener.factory'), 'buildFragmentListener'])->addArgument('%fragment.listener.class%');
        // Looping over all fragment renderers to decorate them
        // This is to make sure they are siteaccess aware (siteaccess is serialized in rendered path).
        foreach ($container->findTaggedServiceIds('kernel.fragment_renderer') as $id => $attributes) {
            $renamedId = "{$id}.inner";
            $definition = $container->getDefinition($id);
            $public = $definition->isPublic();
            $tags = $definition->getTags();
            $definition->setPublic(false);
            $container->setDefinition($renamedId, $definition);
            $decoratedDef = new DefinitionDecorator('ezpublish.decorated_fragment_renderer');
            $decoratedDef->setArguments(array(new Reference($renamedId)));
            $decoratedDef->setPublic($public);
            $decoratedDef->setTags($tags);
            // Special treatment for inline fragment renderer, to fit ESI renderer constructor type hinting (forced to InlineFragmentRenderer)
            if ($id === 'fragment.renderer.inline') {
                $decoratedDef->setClass($container->getParameter('ezpublish.decorated_fragment_renderer.inline.class'));
            }
            $container->setDefinition($id, $decoratedDef);
        }
    }
FragmentPass