ste80pa/php-retejs

dev-main 2024-01-29 16:50 UTC

This package is auto-updated.

Last update: 2024-04-29 17:29:01 UTC


README

Minimum PHP Version Build Status Coverage Status Documentation Status

PHP retejs

Synopsis

PHP implementation of the Engine for ReteJS inspired by D3 Node Engine

Installation

composer require ste80pa/php-retejs

Usage example

<?php

declare(strict_types=1);

namespace Ste80pa\Retejs\Examples;

include_once(__DIR__ . '/../../vendor/autoload.php');

use Ste80pa\Retejs\Engine\Engine;
use Ste80pa\Retejs\Engine\EngineResolver;
use Ste80pa\Retejs\Engine\Processor;
use Ste80pa\Retejs\Engine\ReteLoader;
use Ste80pa\Retejs\Engine\VersionComparerEqualOrGreater;
use Ste80pa\Retejs\Engine\Worker\WorkerPool;
use Ste80pa\Retejs\Examples\Base\Workers\Add;
use Ste80pa\Retejs\Examples\Base\Workers\Add2;
use Ste80pa\Retejs\Examples\Base\Workers\Number;
use Ste80pa\Retejs\Examples\Base\Workers\Number2;
use Ste80pa\Retejs\InputOutput\FileReader;


//
// Engines
//

$workerPool1 = (new WorkerPool())
    ->add('add', new Add())
    ->add('number', new Number());

$workerPool2 = (new WorkerPool())
    ->add('add', new Add2())
    ->add('number', new Number2());


$engine1 = new Engine('demo', '0.1.0', new VersionComparerEqualOrGreater(), $workerPool1);
$engine2 = new Engine('demo2', '0.1.0', new VersionComparerEqualOrGreater(), $workerPool2);

$engineResolver = (new EngineResolver())
    ->add($engine1)
    ->add($engine2);

$reader = new FileReader();
$loader = new ReteLoader();
$processor = new Processor($engineResolver);

$result = $processor->process(
    $loader->load($reader->read(__DIR__ . '/demo.json')),
    []);
echo 'the result is : ', $result->getOutput() . PHP_EOL;

$result = $processor->process(
    $loader->load($reader->read(__DIR__ . '/demo2.json')),
    []
);
echo 'the result is : ', $result->getOutput() . PHP_EOL;

License

MIT