api/symfony/Component/Serializer/NameConverter/MetadataAwareNameConverter.yaml
2024-09-26 02:03:21 -07:00

81 lines
5.4 KiB
YAML

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 <bourigaultfabien@gmail.com>\n# */\n# final\
\ class MetadataAwareNameConverter implements NameConverterInterface\n# {\n# /**\n\
# * @var array<string, array<string, string|null>>\n# */\n# private static array\
\ $normalizeCache = [];\n# \n# /**\n# * @var array<string, array<string, string|null>>\n\
# */\n# private static array $denormalizeCache = [];\n# \n# /**\n# * @var array<string,\
\ array<string, string>>\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<string,\
\ string>"
- 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