@@ -1168,8 +1168,8 @@ serialize and deserialize these objects using a *"discriminator class mapping"*.
11681168
11691169The discriminator is the field (in the serialized string) used to differentiate
11701170between 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
11741174Consider an application that defines an abstract ``CodeRepository `` class
11751175extended 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