Provides tools for rules engine pattern
Install this package as a dependency using Composer.
composer require easyblue/rules-engine
You can create an instance of rule engine with passing processor.
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);
First, register the bundle in config/bundles.php
<?php
return [
// ...
\Easyblue\RulesEngine\Symfony\RulesEngineBundle::class => ['all' => true],
];
You can configure engines in config/packages/rules_engine.{yaml|php|...}
rules_engine:
engines:
profile:
chained: true
The key profile
is the name of the engine that will process on each rules_engine.profile.processor
tagged service.
You simply can extend Easyblue\RulesEngine\Core\ProcessorInterface
like this :
use Easyblue\RulesEngine\Core\ProcessorInterface;
use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag;
#[AutoconfigureTag('rules_engine.profile.processor')]
interface ProfileProcessorInterface extends ProcessorInterface {
}
An instance of Easyblue\RulesEngine\Core\RulesEngine
is available in the container, so you can inject it in your services.
use Easyblue\RulesEngine\Core\RulesEngine;
final class ProfileController {
public function __construct(private readonly RulesEngine $profileRulesEngine)
{
}
}
List all engines configured with bin/console debug:autowiring rules_engine
Contributions are welcome! To contribute, please familiarize yourself with CONTRIBUTING.md.
The easyblueio/rules-engine library is copyright © Stello and licensed for use under the terms of the MIT License (MIT). Please see LICENSE for more information.