@@ -1168,8 +1168,8 @@ serialize and deserialize these objects using a *"discriminator class mapping"*.
1168
1168
1169
1169
The discriminator is the field (in the serialized string) used to differentiate
1170
1170
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 `.
1173
1173
1174
1174
Consider an application that defines an abstract ``CodeRepository `` class
1175
1175
extended by ``GitHubCodeRepository `` and ``BitBucketCodeRepository `` classes.
@@ -1178,18 +1178,20 @@ This example shows how to serialize and deserialize those objects::
1178
1178
// ...
1179
1179
use Symfony\Component\Serializer\Encoder\JsonEncoder;
1180
1180
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorMapping;
1181
- use Symfony\Component\Serializer\Mapping\ClassDiscriminatorResolver ;
1181
+ use Symfony\Component\Serializer\Mapping\ClassDiscriminatorFromClassMetadata ;
1182
1182
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
1183
1183
use Symfony\Component\Serializer\Serializer;
1184
1184
1185
- $discriminator = new ClassDiscriminatorResolver();
1185
+ $classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
1186
+
1187
+ $discriminator = new ClassDiscriminatorFromClassMetadata($classMetadataFactory);
1186
1188
$discriminator->addClassMapping(CodeRepository::class, new ClassDiscriminatorMapping('type', [
1187
1189
'github' => GitHubCodeRepository::class,
1188
1190
'bitbucket' => BitBucketCodeRepository::class,
1189
1191
]));
1190
1192
1191
1193
$serializer = new Serializer(
1192
- array(new ObjectNormalizer(null , null, null, null, $discriminator)),
1194
+ array(new ObjectNormalizer($classMetadataFactory , null, null, null, $discriminator)),
1193
1195
array('json' => new JsonEncoder())
1194
1196
);
1195
1197
0 commit comments