Symfony2对CompilerPass的解释?

| 有人可以解释什么是编译器通过吗?     
已邀请:
        
CompilerPass
实现是某种侦听器,在从配置文件构建依赖项注入容器之后,将其保存为纯PHP之前在缓存中执行。它们用于构建一些结构,这些结构需要从外部资源访问定义,或者需要一些XML / YAML配置中不可用的编程。您可以将它们视为可以修改整个DIC的“最终过滤器”。 让我们考虑一个TwigBundle及其TwigEnvironmentPass。它的作用非常简单: 获取对“ 1”服务的引用(定义为“ 2”) 查找所有已标记“ 3”标记的服务。为此,您需要使用完整的DIC(从XML配置文件构建),因为可以在任何捆绑软件中定义这些服务。 为服务创建方法构建自定义代码。 作为最终结果,将生成以下代码:
protected function getTwigService()
{
    $this->services[\'twig\'] = $instance = new \\Twig_Environment($this->get(\'twig.loader\'), ...);

    // THIS HAS BEEN ADDED THANKS TO THE TwigEnvironmentPass:
    $instance->addExtension(new \\Symfony\\Bundle\\SecurityBundle\\Twig\\Extension\\SecurityExtension($this->get(\'security.context\')));
    $instance->addExtension(new \\Symfony\\Bundle\\TwigBundle\\Extension\\TransExtension($this->get(\'translator\')));
    $instance->addExtension(new \\Symfony\\Bundle\\TwigBundle\\Extension\\TemplatingExtension($this));
    $instance->addExtension(new \\Symfony\\Bundle\\TwigBundle\\Extension\\FormExtension(array(0 => \'TwigBundle::form.html.twig\', 1 => \'SiteBundle::widgets.html.twig\')));
    $instance->addExtension(new \\MyProject\\SiteBundle\\Twig\\Extension\\MyVeryOwnExtensionToTwig($this));

    return $instance;
}
    

要回复问题请先登录注册