Provides tools for rules engine pattern
Install this package as a dependency using Composer.
composer require easyblue/rules-engineYou 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: trueThe key profile is the name of the engine that will process on each rules_engine.profile.processor tagged service.
You simply can implements Easyblue\RulesEngine\Core\ProcessorInterface and use AsProcessor attribute like this :
use Easyblue\RulesEngine\Core\ProcessorInterface;
use Easyblue\RulesEngine\Symfony\Attribute\AsProcessor;
#[AsProcessor('profile', 10)]
class ProfileProcessor implements 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.