8000 Use objectClassResolver callable in AbstractObjectNormalizer · symfony/symfony@db55293 · GitHub
[go: up one dir, main page]

Skip to content

Commit db55293

Browse files
committed
Use objectClassResolver callable in AbstractObjectNormalizer
1 parent 9610d10 commit db55293

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer
4444
* @var callable|null
4545
*/
4646
private $maxDepthHandler;
47+
private $objectClassResolver;
4748

4849
/**
4950
* @var ClassDiscriminatorResolverInterface|null
5051
*/
5152
protected $classDiscriminatorResolver;
5253

53-
public function __construct(ClassMetadataFactoryInterface $classMetadataFactory = null, NameConverterInterface $nameConverter = null, PropertyTypeExtractorInterface $propertyTypeExtractor = null, ClassDiscriminatorResolverInterface $classDiscriminatorResolver = null)
54+
public function __con 8000 struct(ClassMetadataFactoryInterface $classMetadataFactory = null, NameConverterInterface $nameConverter = null, PropertyTypeExtractorInterface $propertyTypeExtractor = null, ClassDiscriminatorResolverInterface $classDiscriminatorResolver = null, callable $objectClassResolver = null)
5455
{
5556
parent::__construct($classMetadataFactory, $nameConverter);
5657

@@ -60,6 +61,7 @@ public function __construct(ClassMetadataFactoryInterface $classMetadataFactory
6061
$classDiscriminatorResolver = new ClassDiscriminatorFromClassMetadata($classMetadataFactory);
6162
}
6263
$this->classDiscriminatorResolver = $classDiscriminatorResolver;
64+
$this->objectClassResolver = $objectClassResolver;
6365
}
6466

6567
/**
@@ -86,7 +88,7 @@ public function normalize($object, $format = null, array $context = array())
8688
$data = array();
8789
$stack = array();
8890
$attributes = $this->getAttributes($object, $format, $context);
89-
$class = \get_class($object);
91+
$class = $this->objectClassResolver ? \call_user_func($this->objectClassResolver, $object) : \get_class($object);
9092
$attributesMetadata = $this->classMetadataFactory ? $this->classMetadataFactory->getMetadataFor($class)->getAttributesMetadata() : null;
9193

9294
foreach ($attributes as $attribute) {
< 6886 code class="diff-text-cell hunk">
@@ -155,7 +157,7 @@ protected function instantiateObject(array &$data, $class, array &$context, \Ref
155157
*/
156158
protected function getAttributes($object, $format = null, array $context)
157159
{
158-
$class = \get_class($object);
160+
$class = $this->objectClassResolver ? \call_user_func($this->objectClassResolver, $object) : \get_class($object);
159161
$key = $class.'-'.$context['cache_key'];
160162

161163
if (isset($this->attributesCache[$key])) {

0 commit comments

Comments
 (0)
0