$array = уже готовый массив с данными.
className = название класса
$reflectionExtractor = new ReflectionExtractor();
$phpDocExtractor = new PhpDocExtractor();
$propertyTypeExtractor = new PropertyInfoExtractor(
[$reflectionExtractor],
[$phpDocExtractor, $reflectionExtractor],
[$phpDocExtractor],
[$reflectionExtractor],
[$reflectionExtractor]
);
$normalizer = new ObjectNormalizer(
null,
null,
null,
$propertyTypeExtractor
);
$arrayNormalizer = new ArrayDenormalizer();
$serializer = new Serializer([$arrayNormalizer, $normalizer]);
return $serializer->denormalize($array, $className);
$normalizer = new ObjectNormalizer(
null,
null,
null,
new ReflectionExtractor()
);
$arrayNormalizer = new ArrayDenormalizer();
$serializer = new Serializer([$arrayNormalizer, $normalizer]);
return $serializer->denormalize($array, $className);
$reflectionExtractor = new ReflectionExtractor();
$phpDocExtractor = new PhpDocExtractor();
$propertyTypeExtractor = new PropertyInfoExtractor(
[$reflectionExtractor],
[$phpDocExtractor, $reflectionExtractor],
[$phpDocExtractor],
[$reflectionExtractor],
[$reflectionExtractor]
);
Performance¶
To figure which normalizer (or denormalizer) must be used to handle an object, the Serializer class will call the supportsNormalization() (or supportsDenormalization()) of all registered normalizers (or denormalizers) in a loop.
The result of these methods can vary depending on the object to serialize, the format and the context. That's why the result is not cached by default and can result in a significant performance bottleneck.
However, most normalizers (and denormalizers) always return the same result when the object's type and the format are the same, so the result can be cached. To do so, make those normalizers (and denormalizers) implement the CacheableSupportsMethodInterface and return true when hasCacheableSupportsMethod() is called.
Предполагаю, что я что - то не так сделал, но стало еще медленнее работать 12 секунд.
Ради эксперимента я сократил JSON до 1 значения скрипт отработал за 2 секунды вместо 12.
Значит вложенность очень сильно влияет.
Дальше попробую свой Нормалайзер запилить, может это как - то сократит расходы, т.к. не будет итераций по большой вложенности и попробую в итоге jms/serializer может аннотации доктрины будут как - то быстрее.
Надеюсь, что кому - то эта ветка будет полезна.