cyradin/serializer

此包已被弃用,不再维护。没有建议替代包。

基于PHP反射的序列化器

1.1.0 2020-03-22 19:02 UTC

This package is auto-updated.

Last update: 2021-10-01 19:04:38 UTC


README

使用ReflectionClass将对象转换为数组的库

安装

$ composer require cyradin/serializer

使用方法

<?php

use Cyradin\Serializer\Serializer;
use Cyradin\Serializer\Enum\LetterCase;
use Cyradin\Serializer\Normalizer\ReflectionNormalizer;
use Cyradin\Serializer\Factory\FormatterFactory;
use Cyradin\Serializer\Factory\ContextFactory;

$normalizer = new ReflectionNormalizer();
$factory = new ContextFactory(new FormatterFactory());

$serializer = new Serializer($factory, $normalizer);
/** @var object|object[] $object */
$result = $serializer->toArray($object);

$context = $factory->createSerializerContext();
$context->setCase(LetterCase::FORMAT_SNAKE_CASE); // transform property names to snake case
$context->setSerializeNull(true); // do not skip null property values

/** @var object|object[] $object */
$result = $serializer->toArray($object);

性能基准

$ composer benchmark
标准化器
标准化器 1 100 10000
symfony get-set 0.000291 0.016245 1.446671
symfony 对象 0.000369 0.020275 2.014218
symfony 属性 0.000161 0.008775 0.835745
jms 0.005103 0.015551 1.250648
本包 0.000296 0.004986 0.467005