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

Команда make:serializer:normalizer

Команда make:serializer:normalizer генерирует класс нормализатора для компонента Serializer. Нормализатор преобразует объекты в массивы и обратно. Первым параметром передаётся имя класса нормализатора. Команда создаёт файл в директории src/Serializer/Normalizer и регистрирует его как сервис.

Синтаксис

php bin/console make:serializer:normalizer ClassName

Пример

Давайте создадим нормализатор для сущности Article:

php bin/console make:serializer:normalizer ArticleNormalizer

После выполнения команды будет создан файл:

<?php namespace AppSerializerNormalizer; use SymfonyComponentSerializerNormalizerNormalizerInterface; use SymfonyComponentSerializerNormalizerDenormalizerInterface; class ArticleNormalizer implements NormalizerInterface, DenormalizerInterface { public function normalize(mixed $object, ?string $format = null, array $context = []): array|string|int|float|bool|ArrayObject|null { // TODO: implement normalization return []; } public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { // TODO: implement supportsNormalization return false; } public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []): mixed { // TODO: implement denormalization return null; } public function supportsDenormalization(mixed $data, string $type, ?string $format = null, array $context = []): bool { // TODO: implement supportsDenormalization return false; } } ?>

Пример

Давайте реализуем нормализатор для сущности Article с полями title и text:

<?php namespace AppSerializerNormalizer; use AppEntityArticle; use SymfonyComponentSerializerNormalizerNormalizerInterface; use SymfonyComponentSerializerNormalizerDenormalizerInterface; class ArticleNormalizer implements NormalizerInterface, DenormalizerInterface { public function normalize(mixed $object, ?string $format = null, array $context = []): array|string|int|float|bool|ArrayObject|null { return [ 'id' => $object->getId(), 'title' => $object->getTitle(), 'text' => $object->getText(), ]; } public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { return $data instanceof Article; } 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; } } ?>

Теперь используем нормализатор в контроллере:

<?php namespace AppController; use AppEntityArticle; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentSerializerSerializerInterface; class ArticleController extends AbstractController { public function index(SerializerInterface $serializer): Response { $article = new Article(); $article->setTitle('hello'); $article->setText('abcde'); $res = $serializer->normalize($article); return new Response(json_encode($res)); } } ?>

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

{"id":null,"title":"hello","text":"abcde"}

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

  • команда debug:serializer,
    которая отлаживает работу Serializer
  • команда make:entity,
    которая создаёт сущность Doctrine
  • команда make:controller,
    которая создаёт класс контроллера
  • команда make:test,
    которая создаёт класс теста
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить