chubbyphp/chubbyphp-deserialization

Chubbyphp 反序列化

4.1.1 2024-02-11 09:39 UTC

README

CI Coverage Status Mutation testing badge Latest Stable Version Total Downloads Monthly Downloads

bugs code_smells coverage duplicated_lines_density ncloc sqale_rating alert_status reliability_rating security_rating sqale_index vulnerabilities

描述

简单的反序列化。

需求

  • php: ^8.1
  • chubbyphp/chubbyphp-decode-encode: ^1.1
  • psr/http-message: ^1.1|^2.0
  • psr/log: ^2.0|^3.0

建议

  • chubbyphp/chubbyphp-container: ^2.2
  • pimple/pimple: ^3.5
  • psr/container: ^2.0.2
  • symfony/config: ^5.4.31|^6.3.8|^7.0 (symfony集成)
  • symfony/dependency-injection: ^5.4.31|^6.3.8|^7.0 (symfony集成)

安装

通过Composer安装为chubbyphp/chubbyphp-deserialization

composer require chubbyphp/chubbyphp-deserialization "^4.1"

使用方法

访问器

反序列化器

字段反序列化器

关系字段反序列化器

反序列化器上下文

反序列化器对象映射注册表

反序列化器

<?php

use Chubbyphp\DecodeEncode\Decoder\Decoder;
use Chubbyphp\DecodeEncode\Decoder\JsonTypeDecoder;
use Chubbyphp\DecodeEncode\Decoder\JsonxTypeDecoder;
use Chubbyphp\DecodeEncode\Decoder\UrlEncodedTypeDecoder;
use Chubbyphp\DecodeEncode\Decoder\XmlTypeDecoder;
use Chubbyphp\DecodeEncode\Decoder\YamlTypeDecoder;
use Chubbyphp\Deserialization\Denormalizer\Denormalizer;
use Chubbyphp\Deserialization\Denormalizer\DenormalizerObjectMappingRegistry;
use Chubbyphp\Deserialization\Deserializer;
use MyProject\Deserialization\ModelMapping;
use MyProject\Model\Model;

$logger...;

$deserializer = new Deserializer(
    new Decoder([
        new JsonTypeDecoder(),
        new JsonxTypeDecoder(),
        new UrlEncodedTypeDecoder(),
        new XmlTypeDecoder(),
        new YamlTypeDecoder()
    ]),
    new Denormalizer(
        new DenormalizerObjectMappingRegistry([
            new ModelMapping()
        ]),
        $logger
    )
);

$model = $deserializer->deserialize(
    Model::class,
    '{"name": "php"}',
    'application/json'
);

echo $model->getName();
// 'php'

print_r($deserializer->getContentTypes());
//[
//    'application/json',
//    'application/jsonx+xml',
//    'application/x-www-form-urlencoded',
//    'application/xml',
//    'application/x-yaml'
//]

print_r($deserializer->decode(
    '{"name": "php"}',
    'application/json'
));
// ['name' => 'php']

$model = $denormalizer->denormalize(
    Model::class,
    ['name' => 'php']
);

echo $model->getName();
// 'php'

映射

反序列化字段映射

反序列化对象映射

延迟反序列化对象映射

策略

服务工厂

chubbyphp-container

chubbyphp-laminas-config-factory

服务提供者

版权

2024 Dominik Zogg