chimera/mapping

有用的注解来配置您的软件的应用层

资助包维护!
lcobucci
Patreon

0.4.0 2021-02-23 21:23 UTC

README

Total Downloads Latest Stable Version Unstable Version

Build Status Code Coverage

术语Chimera(/kɪˈmɪərə/ 或 /kaɪˈmɪərə/)用来描述任何由多种动物部分组成的神话或虚构动物,或者描述由非常不同部分组成的事物,或被视为极具想象力、难以置信或迷人的事物。

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

这组包的目标是使其更容易做到这一点(而不牺牲质量),让您能够专注于软件的行为。

此包提供了一组注解,用于配置您的命令/查询处理器、HTTP中间件和命令/查询总线中间件。

重要:这些注解仅在与读取它们的包一起使用时才会使用,例如 chimera/di-symfony

安装

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

composer require chimera/mapping

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

用法

这些是与如何将服务映射到命令/查询总线相关的注解

  • Chimera\Mapping\ServiceBus\CommandHandler:将类公开为命令处理器
  • Chimera\Mapping\ServiceBus\QueryHandler:将类公开为查询处理器
  • Chimera\Mapping\ServiceBus\Middleware:将类公开为命令/查询中间件

以下是与如何将服务映射到PSR-15应用程序相关的注解

  • Chimera\Mapping\Routing\CreateAndFetchEndpoint:添加一个端点,该端点将执行创建资源的命令,然后执行查询以获取其状态
  • Chimera\Mapping\Routing\CreateEndpoint:添加一个端点,该端点将执行创建资源的命令
  • Chimera\Mapping\Routing\ExecuteAndFetchEndpoint:添加一个端点,该端点将执行修改资源的命令,然后执行查询以获取其状态
  • Chimera\Mapping\Routing\ExecuteEndpoint:添加一个端点,该端点将执行修改/删除资源的命令
  • Chimera\Mapping\Routing\FetchEndpoint:添加一个端点,该端点将执行查询
  • Chimera.GetMapping\Routing\Middleware:将类暴露为PSR-15 HTTP中间件

注解的目的是简化服务的映射,从依赖注入容器文件中移除复杂的标签。它们应该基本上这样使用

<?php
declare(strict_types=1);

namespace MyApi\Creation;

use Chimera\Mapping as Chimera;

/**
 * @Chimera\Routing\CreateEndpoint(path="/books", command=AddToCollection::class, name="book.create", redirectTo="book.fetch_one")
 * @Chimera\ServiceBus\CommandHandler(handles=AddToCollection::class)
 */
final class AddToCollectionHandler
{
    // ...
}

许可证

MIT,请参阅LICENSE