romaindesajardim/broadway-generator-bundle

此扩展包为您生成代码

安装: 13

依赖项: 0

建议者: 0

安全: 0

星星: 6

关注者: 2

分支: 0

类型:symfony-bundle

v0.3.0 2017-11-02 16:38 UTC

This package is not auto-updated.

Last update: 2024-09-21 03:11:47 UTC


README

Build Status codecov

BroadwayGeneratorBundle

此扩展包为Broadway提供了一些symfony命令,用于生成命令、事件、读取模型等。

此扩展包深受SensioGeneratorBundle的启发。

安装

使用composer安装

composer require romaindesajardim/broadway-generator-bundle

并将其添加到您的 AppKernel.php

new RomainDeSaJardim\Bundle\BroadwayGeneratorBundle\BroadwayGeneratorBundle(),

功能

目前只有一个可用的命令。更多命令即将推出...

Broadway 命令

此命令会自动生成一个Broadway命令并实现Broadway命令处理器的handle方法。您只需添加您的参数并编写处理器。

php bin/console rdsj:broadway:generate-command

⚠️ 如果您使用Symfony 2,请使用 app/console 而不是 bin/console

此命令需要3个输入

  • bundle (Broadway命令将被生成的Bundle名称)
  • name (您想要的Broadway命令名称)
  • command-handler 可选 (处理Broadway命令的命令处理器的服务ID)

默认情况下,命令以交互模式运行,并询问以确定这些输入的值

但如果你愿意,你可以以非交互模式运行命令并提供所需的输入

php bin/console rdsj:broadway:generate-command --no-interaction FooBarBundle FooBar [foo.bar-handler]

示例

假设我有一个Broadway命令处理器 FooBarBundle\FooBarCommandHandler 通过一个Symfony服务链接

<service id="foo.bar.command_handler" class="FooBarBundle\FooBarCommandHandler">
   <tag name="command_handler"/>
</service>

并且我想在同一个Bundle(FooBarBundle)中创建一个名为 FooBar 的Broadway命令

因此,在非交互模式下,我必须运行此命令

php bin/console rdsj:broadway:generate-command --no-interaction FooBarBundle FooBar foo.bar.command_handler

结果将是

一个新的文件 Command\FooBarCommand.php

<?php

namespace FooBarBundle\Command;


class FooBarCommand
{
    private $uuid;

    public function __construct($uuid)
    {
        $this->uuid = $uuid;
    }

    public function getUUID()
    {
        return $this->uuid;
    }
}

以及在我的命令处理器 FooBarCommandHandler.php 的末尾添加一个新的handle方法

public function handleFooBar(FooBarCommand $command)
{
    // @TODO Insert your code here
}

Broadway 事件

此命令会自动生成一个Broadway事件并实现Broadway投影器的handle方法。您只需添加您的参数并编写处理器。

php bin/console rdsj:broadway:generate-event

⚠️ 如果您使用Symfony 2,请使用 app/console 而不是 bin/console

此命令需要3个输入

  • bundle (Broadway命令将被生成的Bundle名称)
  • name (您想要的Broadway命令名称)
  • projector 可选 (处理Broadway事件的投影器的服务ID)

默认情况下,命令以交互模式运行,并询问以确定这些输入的值

但如果你愿意,你可以以非交互模式运行命令并提供所需的输入

php bin/console rdsj:broadway:generate-command --no-interaction FooBarBundle FooBar [foo.bar-projector]

示例

与Broadway命令相同

Broadway 读取模型

此命令会自动生成一个Broadway读取模型并将其添加到您Bundle的服务配置中。您只需添加您的参数并编写读取模型。

php bin/console rdsj:broadway:generate-readmodel

⚠️ 如果您使用Symfony 2,请使用 app/console 而不是 bin/console

此命令需要3个输入

  • bundle (Broadway命令将被生成的Bundle名称)
  • name (您想要的Broadway命令名称)
  • service-filename 可选 _(服务文件名是配置您Bundle服务的文件名称)

默认情况下,命令以交互模式运行,并询问以确定这些输入的值

但如果你愿意,你可以以非交互模式运行命令并提供所需的输入

php bin/console rdsj:broadway:generate-readmodel --no-interaction FooBarBundle FooBar [services.xml]

示例

php bin/console rdsj:broadway:generate-readmodel --no interaction FooBarBundle FooBar services.xml

此命令会生成如下读取模型

  <?php
  
  namespace FooBarBundle\ReadModel;
  
  use Broadway\ReadModel\Identifiable;
  
  class FooBarReadModel implements Identifiable
  {
      private $id;
  
      public function __construct($id)
      {
          $this->id = $id;
      }
  
      public function getId()
      {
          return $this->id;
      }
  }

并将 service.xml 转换为

  <?xml version="1.0"?>
  <response xmlns="https://symfony.com.cn/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://symfony.com.cn/schema/dic/services https://symfony.com.cn/schema/dic/services/services-1.0.xsd">
    <services>
      <defaults public="false"/>
    </services>
  </response>

in

  <?xml version="1.0"?>
  <response xmlns="https://symfony.com.cn/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://symfony.com.cn/schema/dic/services https://symfony.com.cn/schema/dic/services/services-1.0.xsd">
    <services>
      <defaults public="false"/>
      <service id="toto.readmodel" class="Broadway\ReadModel\ReadModel">
        <factory method="create" service="broadway.read_model.repository_factory"/>
        <argument>toto.readmodel</argument>
        <argument>AppBundle\ReadModel\TotoReadModel</argument>
      </service>
    </services>
  </response>

以便配置新的读取模型服务

TODO

  • 添加一个命令以在投影器、处理器或叙事中应用或处理事件
  • 添加一个生成Broadway事件的命令
  • 添加一个生成Broadway读取模型的命令
  • 添加一个生成Broadway命令处理器的命令
  • 在创建Broadway命令时自动生成处理器(如果不存在)
  • 向Broadway命令添加字段以添加字段并实现getter

报告问题或功能请求

如果您觉得某个新问题或功能请求尚未存在或不在待办列表中(针对功能请求),您完全可以直接报告

贡献

您可以直接打开拉取请求