chimera/serialization-jms

为 jms/serializer 提供的适配器,允许您创建要处理的消息


README

Total Downloads Latest Stable Version Unstable Version

Build Status Code Coverage

术语 Chimera(/kɪˈmɪərə/ 或 /kaɪˈmɪərə/)用来描述任何由各种动物的部件组成的神话或虚构动物,或者描述任何由非常不同的部件组成的,或者被认为非常富有想象力、不可信或令人眼花缭乱的东西。

PHP 社区中有许多令人惊叹的库,随着 PSR 的创建和采用,我们不一定需要依赖完整的栈框架来创建复杂且设计良好的软件。选择要使用的组件并将它们组合在一起有时可能有点挑战。

这套包的目标是使这一过程变得更简单(而不牺牲质量),让您能够专注于软件的行为。

此包为 jms/serializer 提供了一个适配器,允许我们将其用作 MessageCreator - 负责将用户输入转换为要处理的消息。

安装

包可在 Packagist 上找到,您可以使用 Composer 进行安装。

composer require chimera/serialization-jms

PHP 配置

为了确保我们处理的是正确的数据,我们使用 assert(),这是 PHP 中一个非常有趣的功能,但不太常用。关于 assert() 的好处是我们可以(并且应该)在生产模式下禁用它,以免有冗余的语句。

因此,对于生产模式,我们建议您在您的 php.ini 中将 zend.assertions 设置为 -1。对于开发,您应保留 zend.assertions1 并将 assert.exception 设置为 1,这将使 PHP 在出错时抛出一个 AssertionError

有关更多信息,请参阅文档:https://secure.php.net/manual/en/function.assert.php

用法

这是您如何将 ArrayTransformer 作为 MessageCreator 使用的方法

<?php
declare(strict_types=1);

namespace MyApp;

use Chimera\ExecuteQuery;
use Chimera\MessageCreator\InputExtractor\AppendGeneratedIdentifier;
use Chimera\MessageCreator\InputExtractor\UseInputData;
use Chimera\MessageCreator\JmsSerializer\ArrayTransformer;
use JMS\Serializer\SerializerBuilder;

// We instantiate it passing a valid JMS serialiser
$messageCreator = new ArrayTransformer(
    SerializerBuilder::create()->build(),
    new AppendGeneratedIdentifier(new UseInputData())
);

// Then use it on the actions
$action = new ExecuteQuery($queryBus, $messageCreator, MyQuery::class); // considering that $queryBus is a valid instance of `ServiceBus`
$result = $action->fetch($input); // considering that $input is a valid instance of `Input`

var_dump($result);

许可协议

MIT,见 LICENSE