Метод supportsNormalization
Метод supportsNormalization принадлежит классу Serializer и проверяет,
поддерживает ли сериализатор нормализацию переданных данных.
Первым параметром передаётся значение, которое нужно проверить.
Вторым необязательным параметром передаётся формат в виде строки.
Метод возвращает true, если хотя бы один зарегистрированный нормализатор
может обработать переданные данные, и false в противном случае.
Синтаксис
public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool
Пример
Давайте проверим, поддерживает ли сериализатор нормализацию объекта:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
class ArticleController extends AbstractController
{
public function index(): Response
{
$serializer = new Serializer(
[new ObjectNormalizer()],
[new JsonEncoder()]
);
$res = $serializer->supportsNormalization(new \stdClass());
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим нормализацию скалярного значения, например строки:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
class ArticleController extends AbstractController
{
public function index(): Response
{
$serializer = new Serializer(
[new ObjectNormalizer()],
[new JsonEncoder()]
);
$res = $serializer->supportsNormalization('abcde');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Пример
Давайте проверим нормализацию массива с указанием формата:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
class ArticleController extends AbstractController
{
public function index(): Response
{
$serializer = new Serializer(
[new ObjectNormalizer()],
[new JsonEncoder()]
);
$data = ['a', 'b', 'c', 'd', 'e'];
$res = $serializer->supportsNormalization($data, 'json');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Смотрите также
-
класс
Serializer,
который выполняет сериализацию и десериализацию данных -
метод
supportsDenormalization,
который проверяет поддержку денормализации -
метод
normalize,
который нормализует объект в массив -
метод
serialize,
который сериализует данные в указанный формат