Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 43a42c7

Browse files
feature #18561 [FrameworkBundle] Fallback to default cache system in production for serializer (tgalopin)
This PR was merged into the 3.1-dev branch. Discussion ---------- [FrameworkBundle] Fallback to default cache system in production for serializer | Q | A | ------------- | --- | Branch? | master | Bug fix? | no | New feature? | yes | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | - | License | MIT | Doc PR | - In the same idea as symfony/symfony#18544, this PR proposes a default fallback to filesystem cache for the serializer if the APC cache is not enabled in production. In other words, if the following part of `config_prod.yml` file is not uncommented, the filesystem will be used: ``` yaml #framework: # serializer: # cache: serializer.mapping.cache.doctrine.apc ``` Commits ------- 4f0b8be [FrameworkBundle] Fallback to default cache system in production for serializer
2 parents 27562fb + dd61789 commit 43a42c7

File tree

9 files changed

+15
-6
lines changed

9 files changed

+15
-6
lines changed

DependencyInjection/Configuration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ private function addSerializerSection(ArrayNodeDefinition $rootNode)
513513
->canBeEnabled()
514514
->children()
515515
->booleanNode('enable_annotations')->defaultFalse()->end()
516-
->scalarNode('cache')->end()
516+
->scalarNode('cache')->defaultValue('serializer.mapping.cache.symfony')->end()
517517
->scalarNode('name_converter')->end()
518518
->end()
519519
->end()

DependencyInjection/FrameworkExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -982,7 +982,7 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
982982

983983
$chainLoader->replaceArgument(0, $serializerLoaders);
984984

985-
if (isset($config['cache']) && $config['cache']) {
985+
if (!$container->getParameter('kernel.debug')) {
986986
$container->setParameter(
987987
'serializer.mapping.cache.prefix',
988988
'serializer_'.$this->getKernelRootHash($container)

Resources/config/cache_pools.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
<tag name="cache.pool" clearer="cache.default_pools_clearer" />
2626
</service>
2727

28+
<service id="cache.pool.serializer" parent="cache.adapter.local" public="false">
29+
<tag name="cache.pool" clearer="cache.default_pools_clearer" />
30+
</service>
31+
2832
<service id="cache.adapter.apcu" class="Symfony\Component\Cache\Adapter\ApcuAdapter" abstract="true">
2933
<argument /> <!-- namespace -->
3034
<argument /> <!-- default lifetime -->

Resources/config/serializer.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838
</service>
3939

4040
<!-- Cache -->
41+
<service id="serializer.mapping.cache.symfony" class="Symfony\Component\Cache\DoctrineProvider" public="false">
42+
<argument type="service" id="cache.pool.serializer" />
43+
</service>
44+
4145
<service id="serializer.mapping.cache.doctrine.apc" class="Doctrine\Common\Cache\ApcCache" public="false">
4246
<call method="setNamespace">
4347
<argument>%serializer.mapping.cache.prefix%</argument>

Tests/DependencyInjection/ConfigurationTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ protected static function getBundleDefaultConfig()
221221
'serializer' => array(
222222
'enabled' => false,
223223
'enable_annotations' => false,
224+
'cache' => 'serializer.mapping.cache.symfony',
224225
),
225226
'property_access' => array(
226227
'magic_call' => false,

Tests/DependencyInjection/Fixtures/php/full.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
'serializer' => array(
6767
'enabled' => true,
6868
'enable_annotations' => true,
69-
'cache' => 'serializer.mapping.cache.apc',
69+
'cache' => 'serializer.mapping.cache.doctrine.apc',
7070
'name_converter' => 'serializer.name_converter.camel_case_to_snake_case',
7171
),
7272
'ide' => 'file%%link%%format',

Tests/DependencyInjection/Fixtures/xml/full.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@
4040
</framework:translator>
4141
<framework:validation enabled="true" cache="validator.mapping.cache.doctrine.apc" />
4242
<framework:annotations cache="file" debug="true" file-cache-dir="%kernel.cache_dir%/annotations" />
43-
<framework:serializer enabled="true" enable-annotations="true" cache="serializer.mapping.cache.apc" name-converter="serializer.name_converter.camel_case_to_snake_case" />
43+
<framework:serializer enabled="true" enable-annotations="true" cache="serializer.mapping.cache.doctrine.apc" name-converter="serializer.name_converter.camel_case_to_snake_case" />
4444
</framework:config>
4545
</container>

Tests/DependencyInjection/Fixtures/yml/full.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ framework:
5252
serializer:
5353
enabled: true
5454
enable_annotations: true
55-
cache: serializer.mapping.cache.apc
55+
cache: serializer.mapping.cache.doctrine.apc
5656
name_converter: serializer.name_converter.camel_case_to_snake_case
5757
ide: file%%link%%format
5858
request:

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ public function testSerializerEnabled()
449449

450450
$this->assertCount(1, $argument);
451451
$this->assertEquals('Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader', $argument[0]->getClass());
452-
$this->assertEquals(new Reference('serializer.mapping.cache.apc'), $container->getDefinition('serializer.mapping.class_metadata_factory')->getArgument(1));
452+
$this->assertEquals(new Reference('serializer.mapping.cache.doctrine.apc'), $container->getDefinition('serializer.mapping.class_metadata_factory')->getArgument(1));
453453
$this->assertEquals(new Reference('serializer.name_converter.camel_case_to_snake_case'), $container->getDefinition('serializer.normalizer.object')->getArgument(1));
454454
}
455455

0 commit comments

Comments
 (0)