linio/rule-engine

Versatile rule engine that allows to apply logic to a given context.

2.0.0 2022-12-29 23:00 UTC

README

Latest Stable Version License Build Status Scrutinizer Code Quality

This is a small and versatile rule engine that allows you run conditional logic and predetermined statements on a given context. It has a Parser that targets a very simplistic AST. By default, we have included a Blockly XML parser, but you can add pretty much anything else.

Install

The recommended way to install Linio Rule Engine is through composer.

{
    "require": {
        "linio/rule-engine": "^1.0"
    }
}

Tests

To run the test suite, you need install the dependencies via composer, then run PHPUnit.

$ composer install
$ phpunit

Usage

The RuleEngine interpreter uses a parser to create the AST tree based on a provided string, which is the actual rule source. You can create your own parser or use an existing one, like the BlocklyXmlParser. A context must be an instance of a Dictionary.

<?php

use Linio\Type\Dictionary;
use Linio\Component\RuleEngine\Interpreter;

$context = new Dictionary(['item' => 11]);
$interpreter = new Interpreter();
$interpreter->setParser(...);
$interpreter->evaluate('rule source', $context);