easyblue / rules-engine
提供规则引擎模式的工具
1.0.3
2024-02-16 12:24 UTC
Requires
- php: ^8.1
- symfony/config: ^6.1|^7.0
- symfony/dependency-injection: ^6.1|^7.0
- symfony/framework-bundle: ^6.1|^7.0
- symfony/http-kernel: ^6.1|^7.0
- symfony/string: ^6.1|^7.0
Requires (Dev)
- symfony/phpunit-bridge: ^6.1|^7.0
README
提供规则引擎模式的工具
安装
使用Composer将此软件包作为依赖项安装。
composer require easyblue/rules-engine
用法
在PHP应用程序中
您可以通过传递处理器来创建规则引擎的实例。
use Easyblue\RulesEngine\Core\RulesEngine; use Acme\RulesEngine\Profile; $profilesRuleEngine = new RulesEngine( 'profiles', ['chained' => true], [ new Profile\FreemiumProcessor(), new Profile\PremiumProcessor(), new Profile\GoldProcessor(), new Profile\AdminProcessor(), ] ); $profilesRuleEngine->process($user);
在Symfony应用程序中
首先,在config/bundles.php
中注册该包
<?php return [ // ... \Easyblue\RulesEngine\Symfony\RulesEngineBundle::class => ['all' => true], ];
您可以在config/packages/rules_engine.{yaml|php|...}
中配置引擎
rules_engine: engines: profile: chained: true
键profile
是将在每个rules_engine.profile.processor
标签的服务上处理的引擎的名称。您可以像这样扩展Easyblue\RulesEngine\Core\ProcessorInterface
use Easyblue\RulesEngine\Core\ProcessorInterface; use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag; #[AutoconfigureTag('rules_engine.profile.processor')] interface ProfileProcessorInterface extends ProcessorInterface { }
Easyblue\RulesEngine\Core\RulesEngine
的实例在容器中可用,因此您可以在服务中注入它。
use Easyblue\RulesEngine\Core\RulesEngine; final class ProfileController { public function __construct(private readonly RulesEngine $profileRulesEngine) { } }
使用bin/console debug:autowiring rules_engine
列出所有配置的引擎
贡献
欢迎贡献!要贡献,请熟悉CONTRIBUTING.md。
版权和许可
easyblueio/rules-engine库版权所有 © Stello,并根据MIT许可协议(MIT)许可使用。有关更多信息,请参阅LICENSE。