clearcode/command-bus-console

命令总线命令行界面。

v0.2.0 2015-12-11 09:45 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:04:20 UTC


README

Build Status Scrutinizer Code Quality MIT License

命令总线控制台

命令总线控制台是一个将命令总线功能暴露给命令行界面的包。命令总线控制台基于 Symfony Console Formhttps://github.com/SimpleBus

安装

$ composer require clearcode/command-bus-console

在您的Symfony应用程序的内核中启用束。

    <?php
    // app/AppKernel.php

    public function registerBundles()
    {
        $bundles = array(
            // ...
            new SimpleBusCommandBusBundle(), // this one you probably have already registered
            new SymfonyConsoleFormBundle(),
            new Clearcode\CommandBusConsole\Bundle\CommandBusConsoleBundle(),
        );
    }

用法

为您的命令创建和注册表单类型。

假设您已经有了一个命令类及其处理器类,创建一个表单类型类,将您的命令属性映射到它

class SignUpType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('id', TextType::class, [
                'label' => 'Id',
            ])
            ->add('name', TextType::class, [
                'label' => 'Name',
            ])
            ->add('email', TextType::class, [
                'label' => 'email',
            ])
        ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults([
            'data_class' => SignUp::class,
        ]);
    }

    ...
}

并使用 command_bus.type 注册您的表单类型,需要属性 command,它是您的命令的完全限定名称(FQCN),以及 alias,它将用于将控制台命令注册为名为 command-bus:alias 的名称。

    form_type_service_id:
        class: Fully\Qualified\Class\Name\Of\SignUpType
        tags:
            - { name: form.type }
            - { name: command_bus.type, command: Fully\Qualified\Class\Name\Of\SignUp, alias: sign-up }

以交互模式运行命令

$ bin/console command-bus:sign-up
Id:
Name:
email:

[2015-12-11 10:34:55] The Fully\Qualified\Class\Name\Of\SignUp executed with success.

以非交互模式运行命令

$ bin/console command-bus:alias-for-command --no-interaction --id=1 --name=John --email=john@doe.com

[2015-12-11 10:34:55] The Fully\Qualified\Class\Name\Of\SignUp executed with success.

待办事项

  • 所有字段都是必需的
  • 动态生成表单类型
  • 添加对通过 __construct 实例化命令对象的支持
  • 添加使用任何命令总线实现的可能
  • 在命令总线上引入抽象

许可证

MIT,见 LICENSE。