Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0401973

Browse files
committed
minor #9873 [Serializer] Fix the interface/abstract classes documentation (sroze)
This PR was merged into the 4.1 branch. Discussion ---------- [Serializer] Fix the interface/abstract classes documentation See symfony/symfony#27451 Commits ------- af9726d Fix the interface/abstract classes documentation
2 parents 40c3c16 + af9726d commit 0401973

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

components/serializer.rst

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,8 +1168,8 @@ serialize and deserialize these objects using a *"discriminator class mapping"*.
11681168

11691169
The discriminator is the field (in the serialized string) used to differentiate
11701170
between the possible objects. In practice, when using the Serializer component,
1171-
pass the :class:`Symfony\\Component\\Serializer\\Mapping\\ClassDiscriminatorResolver`
1172-
to the :class:`Symfony\\Component\\Serializer\\Normalizer\\ObjectNormalizer`.
1171+
pass a :class:`Symfony\\Component\\Serializer\\Mapping\\ClassDiscriminatorResolverInterface`
1172+
implementation to the :class:`Symfony\\Component\\Serializer\\Normalizer\\ObjectNormalizer`.
11731173

11741174
Consider an application that defines an abstract ``CodeRepository`` class
11751175
extended by ``GitHubCodeRepository`` and ``BitBucketCodeRepository`` classes.
@@ -1178,18 +1178,20 @@ This example shows how to serialize and deserialize those objects::
11781178
// ...
11791179
use Symfony\Component\Serializer\Encoder\JsonEncoder;
11801180
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorMapping;
1181-
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorResolver;
1181+
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorFromClassMetadata;
11821182
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
11831183
use Symfony\Component\Serializer\Serializer;
11841184

1185-
$discriminator = new ClassDiscriminatorResolver();
1185+
$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
1186+
1187+
$discriminator = new ClassDiscriminatorFromClassMetadata($classMetadataFactory);
11861188
$discriminator->addClassMapping(CodeRepository::class, new ClassDiscriminatorMapping('type', [
11871189
'github' => GitHubCodeRepository::class,
11881190
'bitbucket' => BitBucketCodeRepository::class,
11891191
]));
11901192

11911193
$serializer = new Serializer(
1192-
array(new ObjectNormalizer(null, null, null, null, $discriminator)),
1194+
array(new ObjectNormalizer($classMetadataFactory, null, null, null, $discriminator)),
11931195
array('json' => new JsonEncoder())
11941196
);
11951197

0 commit comments

Comments
 (0)