@@ -1132,7 +1132,7 @@ public function testNormalizationWithMaxDepthOnStdclassObjectDoesNotThrowWarning
1132
1132
1133
1133
public function testDenormalizeCollectionOfScalarTypesPropertyWithPhpDocExtractor ()
1134
1134
{
1135
- $ normalizer = new AbstractObjectNormalizerWithMetadataAndPhpDocExtractor ();
1135
+ $ normalizer = new AbstractObjectNormalizerWithMetadataAndPropertyTypeExtractors ();
1136
1136
$ data = [
1137
1137
'type ' => 'foo ' ,
1138
1138
'values ' => [
@@ -1150,7 +1150,7 @@ public function testDenormalizeCollectionOfScalarTypesPropertyWithPhpDocExtracto
1150
1150
1151
1151
public function testDenormalizeCollectionOfUnionTypesPropertyWithPhpDocExtractor ()
1152
1152
{
1153
- $ normalizer = new AbstractObjectNormalizerWithMetadataAndPhpDocExtractor ();
1153
+ $ normalizer = new AbstractObjectNormalizerWithMetadataAndPropertyTypeExtractors ();
1154
1154
$ data = [
1155
1155
'values1 ' => [
1156
1156
'foo ' => 'foo ' ,
@@ -1166,6 +1166,15 @@ public function testDenormalizeCollectionOfUnionTypesPropertyWithPhpDocExtractor
1166
1166
1167
1167
$ this ->assertEquals ($ expected , $ normalizer ->denormalize ($ data , UnionCollectionDocBlockDummy::class));
1168
1168
}
1169
+
1170
+ public function testDenormalizeMixedProperty ()
1171
+ {
1172
+ $ normalizer = new AbstractObjectNormalizerWithMetadataAndPropertyTypeExtractors ();
1173
+ $ expected = new MixedPropertyDummy ();
1174
+ $ expected ->foo = 'bar ' ;
1175
+
1176
+ $ this ->assertEquals ($ expected , $ normalizer ->denormalize (['foo ' => 'bar ' ], MixedPropertyDummy::class));
1177
+ }
1169
1178
}
1170
1179
1171
1180
class AbstractObjectNormalizerDummy extends AbstractObjectNormalizer
@@ -1268,6 +1277,11 @@ class SnakeCaseNestedDummy
1268
1277
public $ fooBar ;
1269
1278
}
1270
1279
1280
+ class MixedPropertyDummy
1281
+ {
1282
+ public mixed $ foo ;
1283
+ }
1284
+
1271
1285
#[DiscriminatorMap(typeProperty: 'type ' , mapping: [
1272
1286
'first ' => FirstNestedDummyWithConstructorAndDiscriminator::class,
1273
1287
'second ' => SecondNestedDummyWithConstructorAndDiscriminator::class,
@@ -1612,11 +1626,11 @@ public function __construct(
1612
1626
public array $ values2 ;
1613
1627
}
1614
1628
1615
- class AbstractObjectNormalizerWithMetadataAndPhpDocExtractor extends AbstractObjectNormalizer
1629
+ class AbstractObjectNormalizerWithMetadataAndPropertyTypeExtractors extends AbstractObjectNormalizer
1616
1630
{
1617
1631
public function __construct ()
1618
1632
{
1619
- parent ::__construct (new ClassMetadataFactory (new AttributeLoader ()), null , new PropertyInfoExtractor ([], [new PhpDocExtractor ()]));
1633
+ parent ::__construct (new ClassMetadataFactory (new AttributeLoader ()), null , new PropertyInfoExtractor ([], [new PhpDocExtractor (), new ReflectionExtractor () ]));
1620
1634
}
1621
1635
1622
1636
protected function extractAttributes (object $ object , ?string $ format = null , array $ context = []): array
0 commit comments