dms / chainlink-bundle
Chainlink的包装器,提供将责任链模式直接集成到Symfony中的解决方案。提供了标签,可以将处理器注入到定义好的配置上下文中。
0.5
2016-12-01 11:06 UTC
Requires
- php: >=5.4
- dms/chainlink: ^0.4
Requires (Dev)
- matthiasnoback/symfony-config-test: ^0.4
- mockery/mockery: ^0.9
- phpunit/phpunit: ~4.5
- scrutinizer/ocular: ~1.1
- symfony/config: ~2.5
- symfony/dependency-injection: ~2.5
- symfony/http-kernel: ~2.5
- dev-master / 1.0.x-dev
- 0.5
- v0.4
- 0.3.0
- 0.2.1
- 0.2.0
- 0.1.0
- dev-dependabot/add-v2-config-file
- dev-dependabot/composer/scrutinizer/ocular-1.8.1
- dev-task/gha
- dev-dependabot/composer/symfony/config-2.8.52
- dev-dependabot/composer/symfony/http-kernel-2.8.52
- dev-dependabot/composer/mockery/mockery-0.9.11
- dev-dependabot/composer/matthiasnoback/symfony-config-test-2.2.0
- dev-dependabot/composer/phpunit/phpunit-4.8.28
- dev-dependabot/composer/symfony/dependency-injection-2.8.50
This package is auto-updated.
Last update: 2024-08-29 04:19:53 UTC
README
此包包装了Chainlink库,并基于Symfony服务标签提供了一个即插即用的解决方案,用于实现责任链模式。它允许您通过配置设置多个上下文,并定义哪些标签为每个上下文提供处理器。
安装
要获取包代码,请运行
composer require dms/chainlink-bundle
编辑您的AppKernel.php
文件以实例化包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new DMS\Chainlink\Bundle\DMSChainlinkBundle(), ); }
如果您正在寻找其他框架,请访问Packagist以获取包装器和适配器。
使用
要注册新的上下文并将处理器分配给它们,只需在您的config.yml
中添加配置条目。
dms_chainlink: contexts: my_new_context: tag: mycontext.handler
该包将寻找任何带有上面定义的tag
标签的服务,并将它们作为处理器注入到您请求的上下文中。
要处理请求,从容器中检索上下文并将输入传递进去。
$this->container->get('dms_chainlink.context.my_new_context')->handle($input); //or its also aliased at $this->container->get('my_new_context')->handle($input);
用作处理器的服务需要实现Chainlink的HandlerInterface
。处理器负责识别它负责哪个输入,接口中包含一个handles
方法来处理。
链处理顺序
从版本0.3开始,Chainlink支持使用在Symfony中广泛使用的优先级系统来排序处理器。处理器将从高到低被调用。
# src/Vendor/MyBundle/Resources/config/services.yml my_service: class: MyHandler tag: - { name: my_new_context, priority: 1 } my_other_service: class: OtherHandler tag: - { name: my_new_context, priority: 9001 }
在这种情况下,如果OtherHandler
和MyHandler
可以处理该用例,则将首先调用OtherHandler
,然后调用MyHandler
。