Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. UnwrappingDenormalizer.php

class UnwrappingDenormalizer

@author Eduard Bulava <bulavaeduard@gmail.com>

Hierarchy

  • class \Symfony\Component\Serializer\Normalizer\UnwrappingDenormalizer implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface, \Symfony\Component\Serializer\SerializerAwareInterface uses \Symfony\Component\Serializer\SerializerAwareTrait

Expanded class hierarchy of UnwrappingDenormalizer

1 file declares its use of UnwrappingDenormalizer
UnwrappingDenormalizerContextBuilder.php in vendor/symfony/serializer/Context/Normalizer/UnwrappingDenormalizerContextBuilder.php

File

vendor/symfony/serializer/Normalizer/UnwrappingDenormalizer.php, line 23

Namespace

Symfony\Component\Serializer\Normalizer
View source
final class UnwrappingDenormalizer implements DenormalizerInterface, SerializerAwareInterface {
    use SerializerAwareTrait;
    public const UNWRAP_PATH = 'unwrap_path';
    private readonly PropertyAccessorInterface $propertyAccessor;
    public function __construct(?PropertyAccessorInterface $propertyAccessor = null) {
        $this->propertyAccessor = $propertyAccessor ?? PropertyAccess::createPropertyAccessor();
    }
    public function getSupportedTypes(?string $format) : array {
        return [
            '*' => false,
        ];
    }
    public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []) : mixed {
        $propertyPath = $context[self::UNWRAP_PATH];
        $context['unwrapped'] = true;
        if ($propertyPath) {
            if (!$this->propertyAccessor
                ->isReadable($data, $propertyPath)) {
                return null;
            }
            $data = $this->propertyAccessor
                ->getValue($data, $propertyPath);
        }
        if (!$this->serializer instanceof DenormalizerInterface) {
            throw new LogicException('Cannot unwrap path because the injected serializer is not a denormalizer.');
        }
        return $this->serializer
            ->denormalize($data, $type, $format, $context);
    }
    public function supportsDenormalization(mixed $data, string $type, ?string $format = null, array $context = []) : bool {
        return \array_key_exists(self::UNWRAP_PATH, $context) && !isset($context['unwrapped']);
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
DenormalizerInterface::COLLECT_DENORMALIZATION_ERRORS public constant
SerializerAwareTrait::$serializer protected property
SerializerAwareTrait::setSerializer public function
UnwrappingDenormalizer::$propertyAccessor private property
UnwrappingDenormalizer::denormalize public function Denormalizes data back into an object of the given class. Overrides DenormalizerInterface::denormalize
UnwrappingDenormalizer::getSupportedTypes public function Returns the types potentially supported by this denormalizer. Overrides DenormalizerInterface::getSupportedTypes
UnwrappingDenormalizer::supportsDenormalization public function Checks whether the given class is supported for denormalization by this normalizer. Overrides DenormalizerInterface::supportsDenormalization
UnwrappingDenormalizer::UNWRAP_PATH public constant
UnwrappingDenormalizer::__construct public function
RSS feed
Powered by Drupal