Метод serialize класса Serializer
Метод serialize класса Serializer преобразует
PHP-данные в строку заданного формата. Первым параметром
передаётся сериализуемое значение, вторым - формат
(например 'json' или 'xml'), третьим -
массив контекста с дополнительными настройками.
Возвращается строка с сериализованными данными.
Синтаксис
$serializer->serialize($data, string $format, array $context = [])
Пример
Давайте сериализуем простой массив в формат JSON:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\SerializerInterface;
class ArticleController extends AbstractController
{
public function index(SerializerInterface $serializer): Response
{
$data = ['a', 'b', 'c', 'd', 'e'];
$res = $serializer->serialize($data, 'json');
return new Response($res);
}
}
?>
Результат выполнения кода:
["a","b","c","d","e"]
Пример
Давайте сериализуем объект сущности Article в формат JSON:
<?php
namespace App\Entity;
class Article
{
private string $title;
private string $text;
private int $views;
public function __construct(string $title, string $text, int $views)
{
$this->title = $title;
$this->text = $text;
$this->views = $views;
}
public function getTitle(): string
{
return $this->title;
}
public function getText(): string
{
return $this->text;
}
public function getViews(): int
{
return $this->views;
}
}
?>
Теперь сериализуем эту сущность в контроллере:
<?php
namespace App\Controller;
use App\Entity\Article;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\SerializerInterface;
class ArticleController extends AbstractController
{
public function index(SerializerInterface $serializer): Response
{
$article = new Article('hello', 'abcde', 5);
$res = $serializer->serialize($article, 'json');
return new Response($res);
}
}
?>
Результат выполнения кода:
{"title":"hello","text":"abcde","views":5}
Пример
Давайте сериализуем данные в формате XML:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\SerializerInterface;
class ArticleController extends AbstractController
{
public function index(SerializerInterface $serializer): Response
{
$data = ['title' => 'hello', 'views' => 5];
$res = $serializer->serialize($data, 'xml');
return new Response($res);
}
}
?>
Результат выполнения кода:
<?xml version="1.0"?>
<response>
<title>hello</title>
<views>5</views>
</response>
Смотрите также
-
класс
Serializer,
который выполняет сериализацию и десериализацию данных -
метод
deserialize,
который преобразует строку обратно в PHP-данные -
метод
normalize,
который преобразует объект в массив -
атрибут
Groups,
который задаёт группы сериализации