Skip to content

Commit 91c69c6

Browse files
committed
Uses an interface for the class discriminator resolver
1 parent 826b187 commit 91c69c6

File tree

4 files changed

+65
-17
lines changed

4 files changed

+65
-17
lines changed

src/Symfony/Component/Serializer/Mapping/ClassDiscriminatorMapping.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ final class ClassDiscriminatorMapping
1919
private $typeProperty;
2020
private $typesMapping;
2121

22-
public function __construct(string $typeProperty, array $typesMapping = array())
22+
/**
23+
* @param string $typeProperty
24+
* @param array $typesMapping
25+
*/
26+
public function __construct($typeProperty, array $typesMapping = array())
2327
{
2428
$this->typeProperty = $typeProperty;
2529
$this->typesMapping = $typesMapping;
@@ -28,7 +32,7 @@ public function __construct(string $typeProperty, array $typesMapping = array())
2832
/**
2933
* @return string
3034
*/
31-
public function getTypeProperty(): string
35+
public function getTypeProperty()
3236
{
3337
return $this->typeProperty;
3438
}
@@ -38,7 +42,7 @@ public function getTypeProperty(): string
3842
*
3943
* @return string|null
4044
*/
41-
public function getClassForType(string $type)
45+
public function getClassForType($type)
4246
{
4347
if (isset($this->typesMapping[$type])) {
4448
return $this->typesMapping[$type];
@@ -66,7 +70,7 @@ public function getMappedObjectType($object)
6670
/**
6771
* @return array
6872
*/
69-
public function getTypesMapping(): array
73+
public function getTypesMapping()
7074
{
7175
return $this->typesMapping;
7276
}

src/Symfony/Component/Serializer/Mapping/ClassDiscriminatorResolver.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,35 @@
1111

1212
namespace Symfony\Component\Serializer\Mapping;
1313

14+
use Symfony\Component\Serializer\Exception\InvalidArgumentException;
15+
1416
/**
1517
* @author Samuel Roze <samuel.roze@gmail.com>
1618
*/
17-
final class ClassDiscriminatorResolver
19+
final class ClassDiscriminatorResolver implements ClassDiscriminatorResolverInterface
1820
{
1921
/**
2022
* @var ClassDiscriminatorMapping[]
2123
*/
2224
private $mapping = array();
2325

24-
public function addClassMapping(string $class, ClassDiscriminatorMapping $mapping)
26+
/**
27+
* @param string $class
28+
* @param ClassDiscriminatorMapping $mapping
29+
*/
30+
public function addClassMapping($class, ClassDiscriminatorMapping $mapping)
2531
{
2632
if (isset($this->mapping[$class])) {
27-
throw new \InvalidArgumentException(sprintf('Mapping for class "%s" already exists', $class));
33+
throw new InvalidArgumentException(sprintf('Mapping for class "%s" already exists', $class));
2834
}
2935

3036
$this->mapping[$class] = $mapping;
3137
}
3238

3339
/**
34-
* @return ClassDiscriminatorMapping|null
40+
* {@inheritdoc}
3541
*/
36-
public function getMappingForClass(string $class)
42+
public function getMappingForClass($class)
3743
{
3844
if (isset($this->mapping[$class])) {
3945
return $this->mapping[$class];
@@ -43,9 +49,7 @@ public function getMappingForClass(string $class)
4349
}
4450

4551
/**
46-
* @param object $object
47-
*
48-
* @return ClassDiscriminatorMapping|null
52+
* {@inheritdoc}
4953
*/
5054
public function getMappingForMappedObject($object)
5155
{
@@ -59,9 +63,7 @@ public function getMappingForMappedObject($object)
5963
}
6064

6165
/**
62-
* @param object $object
63-
*
64-
* @return string|null
66+
* {@inheritdoc}
6567
*/
6668
public function getTypeForMappedObject($object)
6769
{
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\Serializer\Mapping;
13+
14+
/**
15+
* Knows how to get the class discriminator mapping for classes and objects.
16+
*
17+
* @author Samuel Roze <samuel.roze@gmail.com>
18+
*/
19+
interface ClassDiscriminatorResolverInterface
20+
{
21+
/**
22+
* @param string $class
23+
*
24+
* @return ClassDiscriminatorMapping|null
25+
*/
26+
public function getMappingForClass($class);
27+
28+
/**
29+
* @param object $object
30+
*
31+
* @return ClassDiscriminatorMapping|null
32+
*/
33+
public function getMappingForMappedObject($object);
34+
35+
/**
36+
* @param object $object
37+
*
38+
* @return string|null
39+
*/
40+
public function getTypeForMappedObject($object);
41+
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Component\PropertyAccess\PropertyAccessorInterface;
1717
use Symfony\Component\PropertyInfo\PropertyTypeExtractorInterface;
1818
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorResolver;
19+
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorResolverInterface;
1920
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface;
2021
use Symfony\Component\Serializer\NameConverter\NameConverterInterface;
2122
use Symfony\Component\Serializer\Exception\RuntimeException;
@@ -33,11 +34,11 @@ class ObjectNormalizer extends AbstractObjectNormalizer
3334
protected $propertyAccessor;
3435

3536
/**
36-
* @var ClassDiscriminatorResolver
37+
* @var ClassDiscriminatorResolverInterface
3738
*/
3839
protected $classDiscriminatorResolver;
3940

40-
public function __construct(ClassMetadataFactoryInterface $classMetadataFactory = null, NameConverterInterface $nameConverter = null, PropertyAccessorInterface $propertyAccessor = null, PropertyTypeExtractorInterface $propertyTypeExtractor = null, ClassDiscriminatorResolver $classDiscriminatorResolver = null)
41+
public function __construct(ClassMetadataFactoryInterface $classMetadataFactory = null, NameConverterInterface $nameConverter = null, PropertyAccessorInterface $propertyAccessor = null, PropertyTypeExtractorInterface $propertyTypeExtractor = null, ClassDiscriminatorResolverInterface $classDiscriminatorResolver = null)
4142
{
4243
parent::__construct($classMetadataFactory, $nameConverter, $propertyTypeExtractor);
4344

0 commit comments

Comments
 (0)