bamiz/use-case-executor-bundle

一个 Symfony Bundle,提供工具帮助您将应用程序的业务逻辑与交付机制隔离开来。

0.5.0 2017-03-27 16:12 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:25:57 UTC


README

Use Case Executor Bundle 是一个提供 Screaming Architecture 示例实现的 Symfony Bundle,借助 Symfony 框架提供的组件。它鼓励您以反映应用程序意图的方式设计类。Use Case Executor Bundle 提供的工具可以减轻您从应用程序输入中提取执行正确行为所需信息的重复性任务,从而帮助您以期望的方式输出结果。

安装

只需运行

$ composer require bamiz/use-case-executor-bundle

配置

在 AppKernel.php 中注册您的 Bundle

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            new Bamiz\UseCaseExecutorBundle\BamizUseCaseExecutorBundle(),
        );

        // ...
    }

    // ...
}

在 app/config.yml 中启用 serializer

# app/config.yml

framework:
    serializer: ~
    

基本用法

将您的 Use Case 注册为 Symfony 服务

# app/services.yml

app.my_use_case:
    class: AppBundle\UseCase\MyUseCase

使用注解命名 Use Case,并可选地分配一个输入处理器和一个响应处理器给它。确保 Use Case 类包含一个具有类型提示参数的 execute() 方法。

<?php
// src/AppBundle/UseCase/MyUseCase.php

namespace AppBundle\UseCase;

use Bamiz\UseCaseExecutorBundle\Annotation\UseCase;

/**
 * @UseCase("My Use Case", input="http", response="json")
 */
class MyUseCase
{
    public function execute(MyUseCaseRequest $request)
    {
        // ...
    }
}

使用 Use Case Executor 执行您的 Use Case

<?php
// src/AppBundle/Controller/MyController.php

namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class MyController extends Controller
{
    public function myAction(Request $request)
    {
        return $this->get('bamiz_use_case.executor')->execute('My Use Case', $request);
    }
}

文档