visual-craft/deserializer-bundle

简化API(或其它)数据反序列化的Symfony Bundle

安装量: 13,590

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 6

分支: 0

开放问题: 0

类型:symfony-bundle

v0.0.4 2022-08-30 09:35 UTC

This package is auto-updated.

Last update: 2024-08-29 05:06:23 UTC


README

Build Status Build Status

用于反序列化API响应或任何其他json数据的Bundle

安装

$ composer require visual-craft/deserializer-bundle
  1. 在内核中启用(Symfony 3.4)
<?php

public function registerBundles()
{
    $bundles = [
        // ...
        new VisualCraft\DeserializerBundle\VisualCraftDeserializerBundle(),
        // ...
    ];

或添加到bundles.php(Symfony 4.0+)

<?php

return [
    VisualCraft\DeserializerBundle\VisualCraftDeserializerBundle::class => ['all' => true],
];

使用方法

首先,将DeserializerBuilderFactory注入到您的控制器(或服务)中

<?php

use VisualCraft\DeserializerBundle\DeserializerBuilderFactory;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class SomeController extends Controller
{
    // ...
    public function __construct(DeserializerBuilderFactory $deserializerBuilderFactory)
    {
        $this->deserializerBuilderFactory = $deserializerBuilderFactory;
    }
// ...

或使用服务定位器

<?php

use VisualCraft\DeserializerBundle\DeserializerBuilderFactory;

// ...

$deserializerBuilderFactory = $this->get(DeserializerBuilderFactory::class);
  1. 基本用法
<?php

$this->deserializerBuilderFactory
    ->create(SomeDataClass::class)
    ->getDeserializer()
    ->deserialize($request->getContent())
;
  1. 配置要填充的对象
<?php

// Retrieve from storage
$objectToPopulate = $repository->find(1);
$this->deserializerBuilderFactory
    ->create(SomeDataClass::class)
    ->setObjectToPopulate($objectToPopulate)
    ->getDeserializer()
    ->deserialize($request->getContent())
;
  1. 其他功能示例
<?php

$this->deserializerBuilderFactory
    ->create(SomeDataClass::class)
    ->setValidationGroups(['validation_group'])
    // or:
    ->setValidationGroups(function($object) {
        // if (something)
        return ['validation_group'];
        // endif
    })
    ->setDeserializationGroups(['deserialization_group'])
    ->getDeserializer()
    ->deserialize($request->getContent())
;

许可证

MIT