РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
959 of 1361 menu

Метод supportsDenormalization

Метод supportsDenormalization класса Serializer проверяет, способен ли конкретный денормализатор преобразовать переданные данные в объект заданного типа. Первым параметром передаётся массив данных, вторым - имя класса, в который нужно преобразовать данные, третьим - формат (например, 'json'), четвёртым - массив контекста. Метод возвращает true, если денормализация поддерживается, и false в противном случае.

Синтаксис

<?php public function supportsDenormalization( mixed $data, string $type, ?string $format = null, array $context = [] ): bool ?>

Пример

Давайте создадим собственный денормализатор и проверим, поддерживает ли он денормализацию:

<?php namespace AppSerializer; use AppEntityArticle; use SymfonyComponentSerializerContextAwareDenormalizerInterface; use SymfonyComponentSerializerContextAwareNormalizerInterface; class ArticleDenormalizer implements DenormalizerInterface { public function denormalize( mixed $data, string $type, ?string $format = null, array $context = [] ): mixed { $article = new Article(); $article->setTitle($data['title']); $article->setText($data['text']); return $article; } public function supportsDenormalization( mixed $data, string $type, ?string $format = null, array $context = [] ): bool { return $type === Article::class; } } ?>

Пример

Давайте проверим работу метода supportsDenormalization на данных для класса Article:

<?php namespace AppController; use AppEntityArticle; use AppSerializerArticleDenormalizer; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_check')] public function check(): Response { $data = [ 'title' => 'abcde', 'text' => 'article', ]; $denormalizer = new ArticleDenormalizer(); $res = $denormalizer->supportsDenormalization( $data, Article::class, 'json' ); return new Response(var_export($res, true)); } } ?>

Результат выполнения кода:

true

Пример

Давайте проверим метод для типа, который денормализатор не поддерживает:

<?php namespace AppController; use AppSerializerArticleDenormalizer; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/other', name: 'article_other')] public function other(): Response { $data = [ 'title' => 'abcde', 'text' => 'article', ]; $denormalizer = new ArticleDenormalizer(); $res = $denormalizer->supportsDenormalization( $data, AppEntityUser::class, 'json' ); return new Response(var_export($res, true)); } } ?>

Результат выполнения кода:

false

Смотрите также

  • класс Serializer,
    который выполняет сериализацию и денормализацию данных
  • метод denormalize,
    который преобразует массив данных в объект
  • метод supportsNormalization,
    который проверяет поддержку нормализации данных
  • метод normalize,
    который преобразует объект в массив данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить