Closed
Description
Q | A |
---|---|
Bug report? | yes |
Feature request? | no |
BC Break report? | no |
RFC? | no |
Symfony version | 3.3.13 tested but probably all versions are affected |
<?php
require('./vendor/autoload.php');
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
class ObjectInner
{
public $foo;
public $bar;
public $baz;
}
class ObjectDummy
{
public $object;
public $object2;
public $list;
}
$normalizer = new ObjectNormalizer(); $serializer = new Serializer(array($normalizer));
$objectInner = new ObjectInner();
$objectInner->foo = 'innerFoo';
$objectInner->bar = 'innerBar';
$objectInner->baz = 'innerBaz';
$objectInner2 = new ObjectInner();
$objectInner2->foo = 'innerFoo2';
$objectInner2->bar = 'innerBar2';
$objectInner2->baz = 'innerBaz2';
$objectInner3 = new ObjectInner();
$objectInner3->foo = 'innerFoo3';
$objectInner3->bar = 'innerBar3';
$objectInner3->baz = 'innerBaz3';
$objectDummy = new ObjectDummy();
$objectDummy->object = $objectInner;
$objectDummy->object2 = $objectInner2;
$objectDummy->list = [ $objectInner3 ];
$context = array('attributes' => array(
'object' => ['foo'],
'object2' => ['bar'],
'list' => ['baz']
));
$result = $serializer->normalize($objectDummy, null, $context);
var_dump($result);
will output :
array(3) {
'object' =>
array(1) {
'foo' =>"innerFoo"
}
'object2' =>
array(1) {
'foo' =>"innerFoo2" // requested 'bar'
}
'list' =>
array(1) {
[0] =>
array(1) {
'foo' => "innerFoo3" // requested 'baz'
}
}
}
It seems that as the class of $object
, $object2
and item in $list
are the same class, then the serialized attributes are the same.