openclassrooms/use-case-bundle

OpenClassrooms 用例的 Symfony2 Bundle

安装次数: 348,545

依赖项: 0

建议者: 0

安全: 0

星标: 4

关注者: 25

分支: 1

开放问题: 0

类型:symfony-bundle

v2.3.1 2024-08-06 14:37 UTC

README

Build Status SensioLabsInsight Coverage Status

UseCaseBundle 在 Symfony2 环境中提供了 OpenClassrooms\UseCase 库。UseCase 库提供了一套工具,用于在 Clean / Hexagonal / 用例架构中管理用例的代码。

  • 安全访问
  • 缓存管理
  • 事务上下文
  • 事件

目标是只在用例上保留功能性代码,并使用注解优雅地管理技术代码。

有关 UseCase 库的使用方法,请参阅 UseCase 库的 文档

安装

此捆绑包可以通过 composer 安装

composer require openclassrooms/use-case-bundle 或直接将包添加到 composer.json 文件中。

{
    "require": {
        "openclassrooms/use-case-bundle": "*"
    }
}

安装包后,将捆绑包添加到 AppKernel.php 文件中

// in AppKernel::registerBundles()
    $bundles = array(
        // ...
        new OpenClassrooms\Bundle\OpenClassroomsUseCaseBundle(),
        // ...
);

如果需要缓存设施,请将 OpenClassrooms\CacheBundle 添加到 AppKernel.php 文件中

// in AppKernel::registerBundles()
    $bundles = array(
        // ...
        new OpenClassrooms\Bundle\CacheBundle\OpenClassroomsCacheBundle(),
        new OpenClassrooms\Bundle\UseCaseBundle\OpenClassroomsUseCaseBundle(),
        // ...
);

配置

UseCaseBundle 不需要初始配置。

这是默认配置

# app/config/config.yml
openclassrooms_use_case:
    security: security_context               
    # an implementation of OpenClassrooms\UseCase\Application\Services\Security\Security
    transaction: doctrine.orm.entity_manager
    # an implementation of EntityManagerInterface or OpenClassrooms\UseCase\Application\Services\Transaction\Transaction
    event_sender: event_dispatcher
    # an implementation of EventDispatcherInterface or OpenClassrooms\UseCase\Application\Services\Event\EventSender
    event_factory: openclassrooms.use_case.event_factory
    # an implementation of OpenClassrooms\UseCase\Application\Services\Event\EventFactory

如果需要缓存设施,CacheBundle 配置必须设置。有关更多详细信息,请参阅 文档

此外,仅使用所需的服务。这意味着,例如,如果只使用安全服务,则其他服务将永远不会被调用。即使默认配置中存在或不存在这些服务。

使用方法

有关 UseCase 库的使用方法,请参阅 UseCase 库的 文档

将标签 openclassrooms.use_case 添加到用例声明中,以启用 UseCase 库功能。

Resources/config/services.xml

<?xml version="1.0" ?>

<container 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">

    <parameters>
        <parameter key="a_project.a_use_case.class">AProject\BusinessRules\UseCases\AUseCase</parameter>
    </parameters>

    <services>
        <service id="a_project.a_use_case" class="a_project.a_use_case.class">
            <tag name="openclassrooms.use_case"/>
        </service>
    </services>
</container>

使用的服务是在配置文件中定义的。对于每个标签和每个功能,都可以设置特定的服务

        <service id="a_project.a_use_case" class="a_project.a_use_case.class">
            <tag name="openclassrooms.use_case" 
                    security="a.different.security_context" 
                    cache="a.different.cache" 
                    transaction="a.different.entity_manager"
                    event-sender="a.different.event_dipsatcher"
                    event-factory="a.different.event_factory"/>
        </service>
  • security 参数必须是 OpenClassrooms\UseCase\Application\Services\Security\Security 的实现
  • cache 参数必须是 OpenClassrooms\Cache\Cache\Cache 的实现
  • transaction 参数必须是 EntityManagerInterface 或 OpenClassrooms\UseCase\Application\Services\Transaction\Transaction 的实现
  • event-sender 参数必须是 EventDispatcherInterface 或 OpenClassrooms\UseCase\Application\Services\Event\EventSender 的实现
  • event-factory 参数必须是 OpenClassrooms\UseCase\Application\Services\Event\EventFactory 的实现