coral-media/binary-rules-evaluator

根据一组条件的选择性规则选择一个选项

0.1 2023-02-28 17:02 UTC

This package is auto-updated.

Last update: 2024-09-28 20:25:28 UTC


README

目的

评估一系列条件,避免冗余的 if/else 语句。

工作原理

拥有以下表格

我们将该表格转换为数组

$rulesTable = [
    'Result1' => [
        [
            'Condition1' => true,
            'Condition2' => false,
            'Condition3' => false
        ],
    ],
    'Result2' => [
        [
            'Condition1' => false,
            'Condition2' => true,
            'Condition3' => true
        ],
    ],
    'Result3' => [
        [
            'Condition1' => null,
            'Condition2' => true,
            'Condition3' => false
        ],
        [
            'Condition1' => true,
            'Condition2' => null,
            'Condition3' => false
        ],
    ],
];

以下是一些示例输入

$input1 = [true, null, false] //matches Result3
$input2 = [null, null, false] //matches none

验证器将返回条件标签或如果没有匹配则返回 false。添加 null 以表示未知值,并且不会进行评估。

$binaryRulesEvaluator = (new BinaryRulesEvaluator())
    ->setRulesTable($rulesTable);

$binaryRulesEvaluator->evaluate($input1); // 'Result3'
$binaryRulesEvaluator->evaluate($input2); // false

如果有多个结果共享规则集,则 validate 方法将返回第一个匹配的结果。

这个实用类有助于保持代码的一致性、整洁性和可维护性。相信我,有很多 if/elseif/else 语句的代码可能非常混乱且难以理解。请记住,几乎总是可以将任何评估集转换为 true/false 表格。