Przeglądaj źródła

[FrameworkBundle] added configuration for caching validator metadata

Kris Wallsmith 14 lat temu
rodzic
commit
d0f45fd3b6

+ 1 - 0
src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

@@ -291,6 +291,7 @@ class Configuration implements ConfigurationInterface
                     ->end()
                     ->children()
                         ->booleanNode('enabled')->end()
+                        ->scalarNode('cache')->end()
                         ->arrayNode('annotations')
                             ->canBeUnset()
                             ->treatNullLike(array())

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

@@ -490,6 +490,15 @@ class FrameworkExtension extends Extension
             array_unshift($arguments[0], new Reference('validator.mapping.loader.annotation_loader'));
             $loaderChain->setArguments($arguments);
         }
+
+        if (isset($config['cache'])) {
+            $container->getDefinition('validator.mapping.class_metadata_factory')
+                ->setArgument(1, new Reference('validator.mapping.cache.'.$config['cache']));
+            $container->setParameter(
+                'validator.mapping.cache.prefix',
+                'validator_'.md5($container->getParameter('kernel.root_dir'))
+            );
+        }
     }
 
     private function getValidatorXmlMappingFiles(ContainerBuilder $container)

+ 1 - 0
src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd

@@ -128,6 +128,7 @@
         </xsd:sequence>
 
         <xsd:attribute name="enabled" type="xsd:boolean" />
+        <xsd:attribute name="cache" type="xsd:string" />
         <xsd:attribute name="annotations" type="xsd:boolean" />
     </xsd:complexType>
 

+ 7 - 0
src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml

@@ -7,6 +7,8 @@
     <parameters>
         <parameter key="validator.class">Symfony\Component\Validator\Validator</parameter>
         <parameter key="validator.mapping.class_metadata_factory.class">Symfony\Component\Validator\Mapping\ClassMetadataFactory</parameter>
+        <parameter key="validator.mapping.cache.apc.class">Symfony\Component\Validator\Mapping\Cache\ApcCache</parameter>
+        <parameter key="validator.mapping.cache.prefix" />
         <parameter key="validator.mapping.loader.loader_chain.class">Symfony\Component\Validator\Mapping\Loader\LoaderChain</parameter>
         <parameter key="validator.mapping.loader.static_method_loader.class">Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader</parameter>
         <parameter key="validator.mapping.loader.annotation_loader.class">Symfony\Component\Validator\Mapping\Loader\AnnotationLoader</parameter>
@@ -23,6 +25,11 @@
 
         <service id="validator.mapping.class_metadata_factory" class="%validator.mapping.class_metadata_factory.class%" public="false">
             <argument type="service" id="validator.mapping.loader.loader_chain" />
+            <argument>null</argument>
+        </service>
+
+        <service id="validator.mapping.cache.apc" class="%validator.mapping.cache.apc.class%" public="false">
+            <argument>%validator.mapping.cache.prefix%</argument>
         </service>
 
         <service id="validator.validator_factory" class="%validator.validator_factory.class%" public="false">

+ 1 - 0
src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/full.php

@@ -55,5 +55,6 @@ $container->loadFromExtension('framework', array(
     ),
     'validation' => array(
         'enabled' => true,
+        'cache'   => 'apc',
     ),
 ));

+ 1 - 1
src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/full.xml

@@ -29,6 +29,6 @@
             </app:package>
         </app:templating>
         <app:translator enabled="true" fallback="fr" />
-        <app:validation enabled="true" />
+        <app:validation enabled="true" cache="apc" />
     </app:config>
 </container>

+ 1 - 0
src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/full.yml

@@ -42,3 +42,4 @@ framework:
         fallback: fr
     validation:
         enabled: true
+        cache:   apc