diff --git a/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php index b246ab0918..de4c3ece1d 100644 --- a/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php @@ -127,7 +127,7 @@ class GetSetMethodNormalizer extends AbstractNormalizer */ public function supportsNormalization($data, $format = null) { - return is_object($data) && $this->supports(get_class($data)); + return is_object($data) && !$data instanceof \Traversable && $this->supports(get_class($data)); } /** diff --git a/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php index 86af5c677f..ba84ac717f 100644 --- a/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php @@ -43,7 +43,7 @@ class ObjectNormalizer extends AbstractNormalizer */ public function supportsNormalization($data, $format = null) { - return is_object($data); + return is_object($data) && !$data instanceof \Traversable; } /** diff --git a/src/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php index e6aef07741..4253d3dd0e 100644 --- a/src/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php @@ -127,7 +127,7 @@ class PropertyNormalizer extends AbstractNormalizer */ public function supportsNormalization($data, $format = null) { - return is_object($data) && $this->supports(get_class($data)); + return is_object($data) && !$data instanceof \Traversable && $this->supports(get_class($data)); } /** diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php index 65adfe4c2a..b4c82391d7 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php @@ -502,6 +502,11 @@ class GetSetMethodNormalizerTest extends \PHPUnit_Framework_TestCase $this->normalizer->denormalize(array('non_existing' => true), __NAMESPACE__.'\PropertyDummy') ); } + + public function testNoTraversableSupport() + { + $this->assertFalse($this->normalizer->supportsNormalization(new \ArrayObject())); + } } class GetSetDummy diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php index 433c985266..f07e79907f 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php @@ -429,6 +429,11 @@ class ObjectNormalizerTest extends \PHPUnit_Framework_TestCase $this->normalizer->denormalize(array('non_existing' => true), __NAMESPACE__.'\ObjectDummy') ); } + + public function testNoTraversableSupport() + { + $this->assertFalse($this->normalizer->supportsNormalization(new \ArrayObject())); + } } class ObjectDummy diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/PropertyNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/PropertyNormalizerTest.php index 655241073f..714598f3d5 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/PropertyNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/PropertyNormalizerTest.php @@ -419,6 +419,11 @@ class PropertyNormalizerTest extends \PHPUnit_Framework_TestCase $this->normalizer->normalize($obj, 'any'); } + + public function testNoTraversableSupport() + { + $this->assertFalse($this->normalizer->supportsNormalization(new \ArrayObject())); + } } class PropertyDummy