Команда debug:serializer
Команда debug:serializer показывает,
какие нормализаторы, денормализаторы и энкодеры
доступны в сервисе сериализатора.
Она помогает понять, какой класс будет выбран
для преобразования конкретного объекта
в массив или JSON.
Синтаксис
php bin/console debug:serializer [options]
Пример
Давайте создадим простую сущность и посмотрим, какой нормализатор будет использован для неё:
<?php
namespace AppEntity;
use SymfonyComponentSerializerAnnotationGroups;
use SymfonyComponentSerializerAnnotationSerializedName;
class Article
{
#[Groups(['read'])]
#[SerializedName('title')]
private string $name;
#[Groups(['read'])]
private text $text;
#[Groups(['read'])]
private datetime $createdAt;
public function getName(): string
{
return $this->name;
}
public function setName(string $name): void
{
$this->name = $name;
}
public function getText(): text
{
return $this->text;
}
public function setText(text $text): void
{
$this->text = $text;
}
public function getCreatedAt(): datetime
{
return $this->createdAt;
}
public function setCreatedAt(datetime $createdAt): void
{
$this->createdAt = $createdAt;
}
}
?>
Теперь выполним команду для проверки сериализатора:
php bin/console debug:serializer
Результат выполнения команды:
Symfony Serializer
=================
Normalizers
-----------
* DateTimeNormalizer
* DateTimeZoneNormalizer
* DateIntervalNormalizer
* ObjectNormalizer
* ArrayDenormalizer
* JsonSerializableNormalizer
* ProblemNormalizer
* UidNormalizer
Encoders
--------
* JsonEncoder
* XmlEncoder
* YamlEncoder
* CsvEncoder
Пример
Давайте сериализуем объект Article
в JSON с помощью группы read:
<?php
namespace AppController;
use AppEntityArticle;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentSerializerSerializerInterface;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_show')]
public function show(SerializerInterface $serializer): Response
{
$article = new Article();
$article->setName('abcde');
$article->setText('article text');
$article->setCreatedAt(new DateTime('2024-01-01'));
$json = $serializer->serialize($article, 'json', ['groups' => ['read']]);
return new Response($json);
}
}
?>
Результат выполнения кода:
{"title":"abcde","text":"article text","createdAt":"2024-01-01T00:00:00+00:00"}
Смотрите также
-
команда
debug:container,
которая выводит информацию о сервисах контейнера -
команда
debug:autowiring,
которая показывает доступные для автовайринга сервисы -
команда
make:serializer:normalizer,
которая создаёт новый нормализатор -
команда
debug:config,
которая выводит текущую конфигурацию бандла