easyblue/rules-engine

提供规则引擎模式的工具

1.0.3 2024-02-16 12:24 UTC

This package is auto-updated.

Last update: 2024-09-16 13:38:04 UTC


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