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

Skip to content

Commit 606f504

Browse files
committed
serializer default context binded parameter
1 parent fc79c72 commit 606f504

File tree

4 files changed

+24
-2
lines changed

4 files changed

+24
-2
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

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

13781378
if ($config['default_context'] ?? false) {
1379-
$container->getDefinition('serializer.normalizer.object')->setArgument('default_context', $config['default_context']);
1379+
$container->setParameter('serializer.default_context', $config['default_context']);
13801380
}
13811381
}
13821382

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -980,7 +980,7 @@ public function testSerializerEnabled()
980980
$this->assertEquals(new Reference('property_info', ContainerBuilder::IGNORE_ON_INVALID_REFERENCE), $container->getDefinition('serializer.normalizer.object')->getArgument(3));
981981
$this->assertEquals(array('setCircularReferenceHandler', array(new Reference('my.circular.reference.handler'))), $container->getDefinition('serializer.normalizer.object')->getMethodCalls()[0]);
982982
$this->assertEquals(array('setMaxDepthHandler', array(new Reference('my.max.depth.handler'))), $container->getDefinition('serializer.normalizer.object')->getMethodCalls()[1]);
983-
$this->assertEquals(array('enable_max_depth' => true), $container->getDefinition('serializer.normalizer.object')->getArgument('default_context'));
983+
$this->assertEquals(array('enable_max_depth' => true), $container->getParameter('serializer.default_context'));
984984
}
985985

986986
public function testRegisterSerializerExtractor()

src/Symfony/Component/Serializer/DependencyInjection/SerializerPass.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,20 @@ public function process(ContainerBuilder $container)
5050

5151
$serializerDefinition = $container->getDefinition($this->serializerService);
5252
$serializerDefinition->replaceArgument(0, $normalizers);
53+
$this->addDefaultContextParameterBinding($normalizers);
5354

5455
if (!$encoders = $this->findAndSortTaggedServices($this->encoderTag, $container)) {
5556
throw new RuntimeException(sprintf('You must tag at least one service as "%s" to use the "%s" service.', $this->encoderTag, $this->serializerService));
5657
}
5758

5859
$serializerDefinition->replaceArgument(1, $encoders);
60+
$this->addDefaultContextParameterBinding($encoders);
61+
}
62+
63+
private function addDefaultContextParameterBinding($services)
64+
{
65+
foreach ($services as $service) {
66+
$service->getDefinition()->setBindings(array('$defaultContext' => '%serializer.default_context%'));
67+
}
5968
}
6069
}

src/Symfony/Component/Serializer/Tests/DependencyInjection/SerializerPassTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,17 @@ public function testServicesAreOrderedAccordingToPriority()
7272
$this->assertEquals($expected, $definition->getArgument(0));
7373
$this->assertEquals($expected, $definition->getArgument(1));
7474
}
75+
76+
public function testServiceHasDefaultContextParameterBinding()
77+
{
78+
$container = new ContainerBuilder();
79+
80+
$definition = $container->register('serializer')->setArguments(array(null, null));
81+
$container->register('n3')->addTag('serializer.normalizer')->addTag('serializer.encoder');
82+
83+
$serializerPass = new SerializerPass();
84+
$serializerPass->process($container);
85+
86+
$this->assertEquals(array('$defaultContext' => '%serializer.default_context%'), $definition->getBindings());
87+
}
7588
}

0 commit comments

Comments
 (0)