tankfairies/rulesengine

高速规则引擎

2.1 2024-03-20 00:02 UTC

This package is auto-updated.

Last update: 2024-09-20 15:20:52 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License Build Status

Rulesengine

将条件语句转换为优化的资产规则。这使得可以在文件或数据库中存储规则。

如果规则可以由用户自定义,则正确验证规则非常重要。

这是因为规则被转换为代码以使其快速。

如果有什么功能您想看到,请告诉我,我会调查。

安装

使用 Composer 安装

composer require tankfairies/rulesengine

性能

这些测试是在一台配备了32GB内存的Mac M1 Max上运行的。

运行100,000次执行5次:-

1 => 1.0200 seconds
2 => 1.0146 seconds
3 => 1.0219 seconds
4 => 1.0226 seconds
5 => 1.0206 seconds

一旦构建了规则,性能就会提高:-

1 => 1.0178 seconds
2 => 1.0135 seconds
3 => 1.0180 seconds
4 => 1.0110 seconds
5 => 1.0097 seconds

平均每次大约有100000次调用。性能测试使用 tankfairies/benchmark 进行。

用法

实例化库的新实例

use Tankfairies\Rulesengine\RulesEngine;

$this->rulesEngine = new RulesEngine('storage/rules');
$rulesEngine->setRule('var == 21');
$result = $rulesEngine->evaluate(['var' => 21]);

以下运算符可用于规则中:-

  • AND
  • OR
  • XOR

以下条件可用于规则中:-

  • ==
  • !-
  • <=
  • >=
  • <
  • >
  • IN
  • !IN

示例规则

var == val OR var == 22
['var' => 20, 'val' => 20]
var !IN val
['var' => 20, 'val' => [21, 22, 23]]
var IN val AND var2 == "yes"
['var' => 22, 'val' => [21, 22, 23], 'var2' => 'yes']
var == 100 XOR group IN [123456, 456456]
['var' => '100', 'group' => 12121]

版权和许可证

tankfairies/rulesengine 库版权所有 (c) 2019 Tankfairies (https://tankfairies.com),并许可在 MIT 许可证(MIT)下使用。