Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 91c69c6

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

File tree

4 files changed

+65
-17
lines changed
Filter options

4 files changed

+65
-17
lines changed

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Serializer/Mapping/ClassDiscriminatorMapping.php
+8-4Lines 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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Serializer/Mapping/ClassDiscriminatorResolver.php
+13-11Lines 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
{
+41Lines 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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php
+3-2Lines 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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.