소스 검색

[FrameworkBundle] made ESI optional (should now be enabled explicitely)

Fabien Potencier 14 년 전
부모
커밋
d406ca0d6b

+ 18 - 0
src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

@@ -122,6 +122,10 @@ class FrameworkExtension extends Extension
             $this->registerTranslatorConfiguration($config, $container);
         }
 
+        if (array_key_exists('esi', $config)) {
+            $this->registerEsiConfiguration($config, $container);
+        }
+
         $this->addClassesToCompile(array(
             'Symfony\\Component\\HttpFoundation\\ParameterBag',
             'Symfony\\Component\\HttpFoundation\\HeaderBag',
@@ -252,6 +256,20 @@ class FrameworkExtension extends Extension
         $container->setAlias('session.storage', 'session.storage.array');
     }
 
+    /**
+     * Loads the ESI configuration.
+     *
+     * @param array            $config    A configuration array
+     * @param ContainerBuilder $container A ContainerBuilder instance
+     */
+    protected function registerEsiConfiguration(array $config, ContainerBuilder $container)
+    {
+        if (!$container->hasDefinition('esi')) {
+            $loader = new XmlFileLoader($container, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
+            $loader->load('esi.xml');
+        }
+    }
+
     /**
      * Loads the translator configuration.
      *

+ 20 - 0
src/Symfony/Bundle/FrameworkBundle/Resources/config/esi.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" ?>
+
+<container xmlns="http://www.symfony-project.org/schema/dic/services"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.symfony-project.org/schema/dic/services http://www.symfony-project.org/schema/dic/services/services-1.0.xsd">
+
+    <parameters>
+        <parameter key="esi.class">Symfony\Component\HttpKernel\Cache\Esi</parameter>
+        <parameter key="esi_listener.class">Symfony\Component\HttpKernel\Cache\EsiListener</parameter>
+    </parameters>
+
+    <services>
+        <service id="esi" class="%esi.class%" public="false" />
+
+        <service id="esi_listener" class="%esi_listener.class%" public="false">
+          <tag name="kernel.listener" />
+          <argument type="service" id="esi" on-invalid="ignore" />
+        </service>
+    </services>
+</container>

+ 0 - 9
src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml

@@ -11,8 +11,6 @@
         <parameter key="response_listener.class">Symfony\Component\HttpKernel\ResponseListener</parameter>
         <parameter key="exception_listener.class">Symfony\Component\HttpKernel\Debug\ExceptionListener</parameter>
         <parameter key="exception_listener.controller">Symfony\Bundle\FrameworkBundle\Controller\ExceptionController::showAction</parameter>
-        <parameter key="esi.class">Symfony\Component\HttpKernel\Cache\Esi</parameter>
-        <parameter key="esi_listener.class">Symfony\Component\HttpKernel\Cache\EsiListener</parameter>
     </parameters>
 
     <services>
@@ -34,13 +32,6 @@
             <argument type="service" id="logger" on-invalid="ignore" />
         </service>
 
-        <service id="esi" class="%esi.class%" public="false" />
-
-        <service id="esi_listener" class="%esi_listener.class%" public="false">
-          <tag name="kernel.listener" />
-          <argument type="service" id="esi" on-invalid="ignore" />
-        </service>
-
         <service id="response_listener" class="%response_listener.class%" public="false">
             <tag name="kernel.listener" />
         </service>

+ 0 - 1
src/Symfony/Component/HttpKernel/Kernel.php

@@ -5,7 +5,6 @@ namespace Symfony\Component\HttpKernel;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
-use Symfony\Component\DependencyInjection\Resource\FileResource;
 use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
 use Symfony\Component\DependencyInjection\Loader\DelegatingLoader;
 use Symfony\Component\DependencyInjection\Loader\LoaderResolver;