CustomOperator::execute()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 1
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 1
b 1
f 1
1
<?php
2
/**
3
 * Copyright © 2018 Thomas Klein, All rights reserved.
4
 * See LICENSE bundled with this library for license details.
5
 */
6
7
require_once __DIR__.'/../autoloader.php';
8
9
/**
10
 * Class CustomOperator
11
 */
12
class CustomOperator implements \LogicTree\Operator\OperatorInterface
13
{
14
    public const CODE = 'custom_op';
15
16
    /**
17
     * {@inheritdoc}
18
     */
19
    public function execute(...$expressions): bool
20
    {
21
        return array_sum($expressions) > 5;
22
    }
23
}
24
25
//$operatorPool = new \LogicTree\Operator\OperatorPool();
26
//$operatorPool->addOperator(\LogicTree\Operator\OperatorPool::TYPE_COMPARATOR, 'custom_operator', new CustomOperator());
27
28
//$conditionManager = new \LogicTree\Service\ConditionManager($operatorPool);
29
//$logicTreeFacade = new \LogicTree\LogicTreeFacade($conditionManager);
30
31
/**
32
 * USE CASES
33
 */
34
$logicTreeFacade = new \LogicTree\LogicTreeFacade();
35
36
$dataSource = $logicTreeFacade->createDataSource(['value_1' => 'toto', 'value_2' => 5]);
37
38
$expr1 = new \LogicTree\Node\Condition('value_1', 'eq', 'toto');
39
$expr2 = new \LogicTree\Node\Condition('value_2', 'custom_op', 10);
40
$logicTree = new \LogicTree\Node\Combine('and', false, [$expr1, $expr2]);
41
42
// Add new operator
43
$logicTreeFacade->addOperator(\LogicTree\Operator\OperatorPool::TYPE_COMPARATOR, 'custom_op', new CustomOperator());
44
45
// Execute combine conditions
46
var_dump($logicTreeFacade->executeCombineConditions($logicTree, $dataSource));
47