Remove normalizer cache in Serializer class
This commit is contained in:
parent
06eec9d39f
commit
8566dc18fc
@ -237,7 +237,6 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
|
|||||||
foreach ($this->normalizers as $normalizer) {
|
foreach ($this->normalizers as $normalizer) {
|
||||||
if ($normalizer instanceof NormalizerInterface
|
if ($normalizer instanceof NormalizerInterface
|
||||||
&& $normalizer->supportsNormalization($object, $format)) {
|
&& $normalizer->supportsNormalization($object, $format)) {
|
||||||
$this->normalizerCache[$class][$format] = $normalizer;
|
|
||||||
|
|
||||||
return $normalizer->normalize($object, $format, $context);
|
return $normalizer->normalize($object, $format, $context);
|
||||||
}
|
}
|
||||||
@ -272,7 +271,6 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
|
|||||||
foreach ($this->normalizers as $normalizer) {
|
foreach ($this->normalizers as $normalizer) {
|
||||||
if ($normalizer instanceof DenormalizerInterface
|
if ($normalizer instanceof DenormalizerInterface
|
||||||
&& $normalizer->supportsDenormalization($data, $class, $format)) {
|
&& $normalizer->supportsDenormalization($data, $class, $format)) {
|
||||||
$this->denormalizerCache[$class][$format] = $normalizer;
|
|
||||||
|
|
||||||
return $normalizer->denormalize($data, $class, $format, $context);
|
return $normalizer->denormalize($data, $class, $format, $context);
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,50 @@ class SerializerTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertTrue($this->serializer->denormalize(json_encode($data), 'stdClass', 'json'));
|
$this->assertTrue($this->serializer->denormalize(json_encode($data), 'stdClass', 'json'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testNormalizeWithSupportOnData()
|
||||||
|
{
|
||||||
|
$normalizer1 = $this->getMock('Symfony\Component\Serializer\Normalizer\NormalizerInterface');
|
||||||
|
$normalizer1->method('supportsNormalization')
|
||||||
|
->willReturnCallback(function ($data, $format) {
|
||||||
|
return isset($data->test);
|
||||||
|
});
|
||||||
|
$normalizer1->method('normalize')->willReturn('test1');
|
||||||
|
|
||||||
|
$normalizer2 = $this->getMock('Symfony\Component\Serializer\Normalizer\NormalizerInterface');
|
||||||
|
$normalizer2->method('supportsNormalization')
|
||||||
|
->willReturn(true);
|
||||||
|
$normalizer2->method('normalize')->willReturn('test2');
|
||||||
|
|
||||||
|
$serializer = new Serializer(array($normalizer1, $normalizer2));
|
||||||
|
|
||||||
|
$data = new \stdClass();
|
||||||
|
$data->test = true;
|
||||||
|
$this->assertEquals('test1', $serializer->normalize($data));
|
||||||
|
|
||||||
|
$this->assertEquals('test2', $serializer->normalize(new \stdClass()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDenormalizeWithSupportOnData()
|
||||||
|
{
|
||||||
|
$denormalizer1 = $this->getMock('Symfony\Component\Serializer\Normalizer\DenormalizerInterface');
|
||||||
|
$denormalizer1->method('supportsDenormalization')
|
||||||
|
->willReturnCallback(function ($data, $type, $format) {
|
||||||
|
return isset($data['test1']);
|
||||||
|
});
|
||||||
|
$denormalizer1->method('denormalize')->willReturn('test1');
|
||||||
|
|
||||||
|
$denormalizer2 = $this->getMock('Symfony\Component\Serializer\Normalizer\DenormalizerInterface');
|
||||||
|
$denormalizer2->method('supportsDenormalization')
|
||||||
|
->willReturn(true);
|
||||||
|
$denormalizer2->method('denormalize')->willReturn('test2');
|
||||||
|
|
||||||
|
$serializer = new Serializer(array($denormalizer1, $denormalizer2));
|
||||||
|
|
||||||
|
$this->assertEquals('test1', $serializer->denormalize(array('test1' => true), 'test'));
|
||||||
|
|
||||||
|
$this->assertEquals('test2', $serializer->denormalize(array(), 'test'));
|
||||||
|
}
|
||||||
|
|
||||||
public function testSerialize()
|
public function testSerialize()
|
||||||
{
|
{
|
||||||
$this->serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new JsonEncoder()));
|
$this->serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new JsonEncoder()));
|
||||||
|
Reference in New Issue
Block a user