Completed
Pull Request — master (#82)
by
unknown
02:08
created

GenericSqlDefinitions   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 2
dl 0
loc 57
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A create() 0 51 2
1
<?php
2
3
namespace RulerZ\Target\Operators;
4
5
class GenericSqlDefinitions
6
{
7
    /**
8
     * @return Definitions
9
     */
10
    public static function create(Definitions $customOperators)
11
    {
12
        $defaultInlineOperators = [
13
            'and' => function ($a, $b) {
14
                return sprintf('(%s)', OperatorTools::inlineMixedInstructions([$a, $b], 'AND'));
15
            },
16
            'or' => function ($a, $b) {
17
                return sprintf('(%s)', OperatorTools::inlineMixedInstructions([$a, $b], 'OR'));
18
            },
19
            'not' => function ($a) {
20
                return sprintf('NOT (%s)', OperatorTools::inlineMixedInstructions([$a]));
21
            },
22
            '=' => function ($a, $b) {
23
                return OperatorTools::inlineMixedInstructions([$a, $b], '=');
24
            },
25
            '!=' => function ($a, $b) {
26
                return OperatorTools::inlineMixedInstructions([$a, $b], '!=');
27
            },
28
            '>' => function ($a, $b) {
29
                return OperatorTools::inlineMixedInstructions([$a, $b], '>');
30
            },
31
            '>=' => function ($a, $b) {
32
                return OperatorTools::inlineMixedInstructions([$a, $b], '>=');
33
            },
34
            '<' => function ($a, $b) {
35
                return OperatorTools::inlineMixedInstructions([$a, $b], '<');
36
            },
37
            '<=' => function ($a, $b) {
38
                return OperatorTools::inlineMixedInstructions([$a, $b], '<=');
39
            },
40
            'in' => function ($a, $b) {
41
                if ($b[0] === '(') {
42
                    return OperatorTools::inlineMixedInstructions([$a, $b], 'IN');
43
                } else {
44
                    return sprintf(
45
                        '%s IN (%s)',
46
                        OperatorTools::inlineMixedInstructions([$a]),
47
                        OperatorTools::inlineMixedInstructions([$b])
48
                    );
49
                }
50
            },
51
            'like' => function ($a, $b) {
52
                return OperatorTools::inlineMixedInstructions([$a, $b], 'LIKE');
53
            },
54
        ];
55
56
        $definitions = new Definitions();
57
        $definitions->defineInlineOperators($defaultInlineOperators);
58
59
        return $definitions->mergeWith($customOperators);
0 ignored issues
show
Documentation introduced by
$customOperators is of type object<RulerZ\Target\Operators\Definitions>, but the function expects a object<self>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
60
    }
61
}
62