openclassrooms / use-case-bundle
OpenClassrooms 用例的 Symfony2 Bundle
v2.3.1
2024-08-06 14:37 UTC
Requires
- php: >=7.1
- doctrine/orm: ~2.3 || ~3.2
- openclassrooms/cache: v1.1.0
- openclassrooms/cache-bundle: ^v2.2.1
- openclassrooms/use-case: ^v1.1.1
- symfony/config: ~5.0 || ~6.4 || ~7.1
- symfony/dependency-injection: ~5.0 || ~6.4 || ~7.1
- symfony/event-dispatcher: ~5.0 || ~6.4 || ~7.1
- symfony/http-kernel: ~5.0 || ~6.4 || ~7.1 || ~7.1
- symfony/security-core: ~5.0 || ~6.4 || ~7.1
Requires (Dev)
- phpunit/phpunit: ~9.6
- v2.3.1
- v2.3.0
- v2.2.1
- v2.2.0
- v2.2.0-alpha
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- dev-master / 2.0.x-dev
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.0
- dev-OC-52497_update_libs
- dev-OC-52486_fix_use_case_library
- dev-OC-52463_update-dependencies
- dev-OC-41162_fix_sf_deprecations
- dev-SF4-upgrade_use_case_bundle_dependencies
This package is auto-updated.
Last update: 2024-09-06 15:34:26 UTC
README
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 的实现