dmt-software/jms-parameter-bag-handler
Composer 安装命令:
composer require dmt-software/jms-parameter-bag-handler
包简介
A JMS serializer handler that serializes and deserializes bag of parameters that are not predefined
README 文档
README
Install
composer require dmt-software/jms-parameter-bag-handler
Usage
Configure Serializer
<?php use DMT\Serializer\ParameterBagHandler; use JMS\Serializer\Handler\HandlerRegistry; use JMS\Serializer\SerializerBuilder; $serializer = SerializerBuilder::create() ->configureHandlers( function (HandlerRegistry $registry) { $registry->registerSubscribingHandler(new ParameterBagHandler()); } ) ->build();
Enable ParameterBag
The serializer behavior is extended with a new type called ParameterBag.
To use this functionality add the JMS Serializer annotation @Type("ParameterBag") to the property of your class.
By default the ParameterBag uses instances of DMT\Serializer\Parameter. You can override this behavior by adding
the FQCN to the ParameterBag type, eg @Type("ParameterBag<MyNamespace\MyParameter>"). If you do so, make sure your
custom parameters implement the DMT\Serializer\ParameterInterface.
<?php use DMT\Serializer\ParameterBag; use JMS\Serializer\Annotation as JMS; class Entity { /** * @var ParameterBag * * @JMS\Type("ParameterBag") */ protected $parameters; /** * @return ParameterBag */ public function getParameters(): ParameterBag { return $this->parameters; } /** * @param ParameterBag $parameters */ public function setParameters(ParameterBag $parameters): void { $this->parameters = $parameters; } }
Further reading on JMS-serializer, like YAML or XML configuration, visit https://jmsyst.com/libs/serializer
Deserialize Json
<?php use DMT\Serializer\ParameterInterface; use JMS\Serializer\Serializer; /** @var Serializer $serializer */ $object = $serializer->deserialize('{"parameters":{"foo":"bar", "baz":false}}', Entity::class, 'json'); $parameters = $object->getParameters(); // iterate over all the parameters foreach ($parameters as $parameter) { /** @var ParameterInterface $parameter */ var_dump($parameter->getValue()); // outputs string(3) "bar", bool(false) } // or access an expected parameter by it's name var_dump($parameters['baz']); // outputs class DMT\Serializer\Parameter#61 (2) { ... }
Serialize to Json
<?php use DMT\Serializer\Parameter; use DMT\Serializer\ParameterBag; use JMS\Serializer\Serializer; $parameter = new Parameter(); $parameter->setName('foo'); $parameter->setValue(1); $object = new Entity(); $object->setParameters(new ParameterBag([$parameter])); /** @var Serializer $serializer */ echo $serializer->serialize($object, 'json'); // outputs {"parameters":{"foo":1}}
dmt-software/jms-parameter-bag-handler 适用场景与选型建议
dmt-software/jms-parameter-bag-handler 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 05 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 dmt-software/jms-parameter-bag-handler 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 dmt-software/jms-parameter-bag-handler 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-05-17