name: MetadataAwareNameConverter class_comment: null dependencies: - name: LogicException type: class source: Symfony\Component\Serializer\Exception\LogicException - name: ClassMetadataFactoryInterface type: class source: Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface - name: AbstractNormalizer type: class source: Symfony\Component\Serializer\Normalizer\AbstractNormalizer properties: [] methods: - name: getCacheValueForAttributesMetadata visibility: private parameters: - name: class - name: context comment: "# * @author Fabien Bourigault \n# */\n# final\ \ class MetadataAwareNameConverter implements NameConverterInterface\n# {\n# /**\n\ # * @var array>\n# */\n# private static array\ \ $normalizeCache = [];\n# \n# /**\n# * @var array>\n\ # */\n# private static array $denormalizeCache = [];\n# \n# /**\n# * @var array>\n# */\n# private static array $attributesMetadataCache\ \ = [];\n# \n# public function __construct(\n# private readonly ClassMetadataFactoryInterface\ \ $metadataFactory,\n# private readonly ?NameConverterInterface $fallbackNameConverter\ \ = null,\n# ) {\n# }\n# \n# public function normalize(string $propertyName, ?string\ \ $class = null, ?string $format = null, array $context = []): string\n# {\n#\ \ $class = 1 < \\func_num_args() ? func_get_arg(1) : null;\n# $format = 2 < \\\ func_num_args() ? func_get_arg(2) : null;\n# $context = 3 < \\func_num_args()\ \ ? func_get_arg(3) : [];\n# \n# if (null === $class) {\n# return $this->normalizeFallback($propertyName,\ \ $class, $format, $context);\n# }\n# \n# if (!\\array_key_exists($class, self::$normalizeCache)\ \ || !\\array_key_exists($propertyName, self::$normalizeCache[$class])) {\n# self::$normalizeCache[$class][$propertyName]\ \ = $this->getCacheValueForNormalization($propertyName, $class);\n# }\n# \n# return\ \ self::$normalizeCache[$class][$propertyName] ?? $this->normalizeFallback($propertyName,\ \ $class, $format, $context);\n# }\n# \n# public function denormalize(string $propertyName,\ \ ?string $class = null, ?string $format = null, array $context = []): string\n\ # {\n# $class = 1 < \\func_num_args() ? func_get_arg(1) : null;\n# $format = 2\ \ < \\func_num_args() ? func_get_arg(2) : null;\n# $context = 3 < \\func_num_args()\ \ ? func_get_arg(3) : [];\n# \n# if (null === $class) {\n# return $this->denormalizeFallback($propertyName,\ \ $class, $format, $context);\n# }\n# \n# $cacheKey = $this->getCacheKey($class,\ \ $context);\n# if (!\\array_key_exists($cacheKey, self::$denormalizeCache) ||\ \ !\\array_key_exists($propertyName, self::$denormalizeCache[$cacheKey])) {\n\ # self::$denormalizeCache[$cacheKey][$propertyName] = $this->getCacheValueForDenormalization($propertyName,\ \ $class, $context);\n# }\n# \n# return self::$denormalizeCache[$cacheKey][$propertyName]\ \ ?? $this->denormalizeFallback($propertyName, $class, $format, $context);\n#\ \ }\n# \n# private function getCacheValueForNormalization(string $propertyName,\ \ string $class): ?string\n# {\n# if (!$this->metadataFactory->hasMetadataFor($class))\ \ {\n# return null;\n# }\n# \n# $attributesMetadata = $this->metadataFactory->getMetadataFor($class)->getAttributesMetadata();\n\ # if (!\\array_key_exists($propertyName, $attributesMetadata)) {\n# return null;\n\ # }\n# \n# if (null !== $attributesMetadata[$propertyName]->getSerializedName()\ \ && null !== $attributesMetadata[$propertyName]->getSerializedPath()) {\n# throw\ \ new LogicException(\\sprintf('Found SerializedName and SerializedPath attributes\ \ on property \"%s\" of class \"%s\".', $propertyName, $class));\n# }\n# \n# return\ \ $attributesMetadata[$propertyName]->getSerializedName() ?? null;\n# }\n# \n\ # private function normalizeFallback(string $propertyName, ?string $class = null,\ \ ?string $format = null, array $context = []): string\n# {\n# return $this->fallbackNameConverter\ \ ? $this->fallbackNameConverter->normalize($propertyName, $class, $format, $context)\ \ : $propertyName;\n# }\n# \n# private function getCacheValueForDenormalization(string\ \ $propertyName, string $class, array $context): ?string\n# {\n# $cacheKey = $this->getCacheKey($class,\ \ $context);\n# if (!\\array_key_exists($cacheKey, self::$attributesMetadataCache))\ \ {\n# self::$attributesMetadataCache[$cacheKey] = $this->getCacheValueForAttributesMetadata($class,\ \ $context);\n# }\n# \n# return self::$attributesMetadataCache[$cacheKey][$propertyName]\ \ ?? null;\n# }\n# \n# private function denormalizeFallback(string $propertyName,\ \ ?string $class = null, ?string $format = null, array $context = []): string\n\ # {\n# return $this->fallbackNameConverter ? $this->fallbackNameConverter->denormalize($propertyName,\ \ $class, $format, $context) : $propertyName;\n# }\n# \n# /**\n# * @return array" - name: getCacheKey visibility: private parameters: - name: class - name: context comment: null traits: - Symfony\Component\Serializer\Exception\LogicException - Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface - Symfony\Component\Serializer\Normalizer\AbstractNormalizer interfaces: - NameConverterInterface