chubbyphp-serialization
Description
A simple serialization.
Requirements
- php: ^7.2
- doctrine/inflector: ^1.0
- psr/http-message: ^1.0.1
- psr/link: ^1.0
- psr/log: ^1.1
Suggest
- chubbyphp/chubbyphp-container: ^1.0
- pimple/pimple: ^3.2.3
- psr/container: ^1.0
- symfony/dependency-injection: ^2.8.50|^3.4.26|^4.2.7|^5.0 (symfony integration)
- symfony/yaml: ^2.8.50|^3.4.26|^4.2.7|^5.0 (application/x-yaml support)
Installation
Through Composer as chubbyphp/chubbyphp-serialization.
composer require chubbyphp/chubbyphp-serialization "^2.13"
Usage
Accessor
Encoder
Type Encoder
Link
Normalizer
Field Normalizer
Relation Field Normalizer
- EmbedManyFieldNormalizer
- EmbedOneFieldNormalizer
- ReferenceManyFieldNormalizer
- ReferenceOneFieldNormalizer
Link Normalizer
Normalizer Context
NormalizerObjectMappingRegistry
Mapping
NormalizationFieldMapping
NormalizationLinkMapping
NormalizationObjectMapping
LazyNormalizationObjectMapping
ServiceFactory
ServiceProvider
Serializer
<?php
use Chubbyphp\Serialization\Encoder\Encoder;
use Chubbyphp\Serialization\Encoder\JsonTypeEncoder;
use Chubbyphp\Serialization\Encoder\JsonxTypeEncoder;
use Chubbyphp\Serialization\Encoder\UrlEncodedTypeEncoder;
use Chubbyphp\Serialization\Encoder\XmlTypeEncoder;
use Chubbyphp\Serialization\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/x-jsonx',
// 'application/x-www-form-urlencoded',
// 'application/xml',
// 'application/x-yaml'
//]
echo $serializer->encode(
['name' => 'php'],
'application/json'
);
// '{"name": "php"}'
Copyright
Dominik Zogg 2020