A simple serialization.
- php: ^8.2
- chubbyphp/chubbyphp-decode-encode: ^1.1
- doctrine/inflector: ^1.4.4|^2.0.10
- psr/http-message: ^1.1|^2.0
- psr/link: ^1.1.1|^2.0.1
- psr/log: ^2.0|^3.0.2
- chubbyphp/chubbyphp-container: ^2.2
- pimple/pimple: ^3.5
- psr/container: ^2.0.2
- symfony/config: ^5.4.46|^6.4.14|^7.2 (symfony integration)
- symfony/dependency-injection: ^5.4.46|^6.4.14|^7.2 (symfony integration)
Through Composer as chubbyphp/chubbyphp-serialization.
composer require chubbyphp/chubbyphp-serialization "^4.1"
- EmbedManyFieldNormalizer
- EmbedOneFieldNormalizer
- ReferenceManyFieldNormalizer
- ReferenceOneFieldNormalizer
<?php
use Chubbyphp\DecodeEncode\Encoder\Encoder;
use Chubbyphp\DecodeEncode\Encoder\JsonTypeEncoder;
use Chubbyphp\DecodeEncode\Encoder\JsonxTypeEncoder;
use Chubbyphp\DecodeEncode\Encoder\UrlEncodedTypeEncoder;
use Chubbyphp\DecodeEncode\Encoder\XmlTypeEncoder;
use Chubbyphp\DecodeEncode\Encoder\YamlTypeEncoder;
use Chubbyphp\Serialization\Normalizer\Normalizer;
use Chubbyphp\Serialization\Normalizer\NormalizerObjectMappingRegistry;
use Chubbyphp\Serialization\Serializer;
use MyProject\Serialization\ModelMapping;
use MyProject\Model\Model;
use Psr\Http\Message\ServerRequestInterface;
$logger = ...;
$serializer = new Serializer(
new Normalizer(
new NormalizerObjectMappingRegistry([
new ModelMapping()
]),
$logger
),
new Encoder([
new JsonTypeEncoder(),
new JsonxTypeEncoder(),
new UrlEncodedTypeEncoder(),
new XmlTypeEncoder(),
new YamlTypeEncoder()
])
);
$model = new Model;
$model->setName('php');
$json = $serializer->serialize(
$model,
'application/json'
);
echo $json;
// '{"name": "php"}'
$model = new Model;
$model->setName('php');
$data = $serializer->normalize(
$model
);
print_r($data);
// ['name' => 'php']
print_r($serializer->getContentTypes());
//[
// 'application/json',
// 'application/jsonx+xml',
// 'application/x-www-form-urlencoded',
// 'application/xml',
// 'application/x-yaml'
//]
echo $serializer->encode(
['name' => 'php'],
'application/json'
);
// '{"name": "php"}'
2024 Dominik Zogg