visual-craft / deserializer-bundle
简化API(或其它)数据反序列化的Symfony Bundle
v0.0.4
2022-08-30 09:35 UTC
Requires
- php: >=7.4
- ext-json: *
- symfony/framework-bundle: ^5.3|^6.0
- symfony/property-access: ^5.3|^6.0
- symfony/serializer: ^5.3|^6.0
- symfony/validator: ^5.3|^6.0
- symfony/yaml: ^5.3|^6.0
Requires (Dev)
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-08-29 05:06:23 UTC
README
用于反序列化API响应或任何其他json数据的Bundle
安装
$ composer require visual-craft/deserializer-bundle
- 在内核中启用(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);
- 基本用法
<?php $this->deserializerBuilderFactory ->create(SomeDataClass::class) ->getDeserializer() ->deserialize($request->getContent()) ;
- 配置要填充的对象
<?php // Retrieve from storage $objectToPopulate = $repository->find(1); $this->deserializerBuilderFactory ->create(SomeDataClass::class) ->setObjectToPopulate($objectToPopulate) ->getDeserializer() ->deserialize($request->getContent()) ;
- 其他功能示例
<?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