Script::addParam()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 5
rs 9.4285
c 1
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php namespace Bardex\Elastic;
2
3
class Script
4
{
5
    /**
6
     * @var string язык скрипта
7
     */
8
    protected $language = '';
9
10
    /**
11
     * @var array параметры скрипта
12
     */
13
    protected $params = [];
14
15
    /**
16
     * @var array тело скрипта
17
     */
18
    protected $lines = [];
19
20
    /**
21
     * @var string разделитель строк в теле скрипта
22
     */
23
    protected $lineSeparator = "\n";
24
25
    /**
26
     * Создать новый скрипт
27
     * @param string $language =painless
28
     */
29
    public function __construct($language = 'painless')
30
    {
31
        $this->language = $language;
32
    }
33
34
35
    /**
36
     * Установить разделитель строк в теле скрипта
37
     * @param string $lineSeparator
38
     * @return self $this
39
     */
40
    public function setLineSeparator($lineSeparator)
41
    {
42
        $this->lineSeparator = $lineSeparator;
43
        return $this;
44
    }
45
46
47
    /**
48
     * Добавить строку в тело скрипта
49
     * @param string $line - строка
50
     * @return self $this
51
     */
52
    public function addLine($line)
53
    {
54
        $this->lines[] = $line;
55
        return $this;
56
    }
57
58
    /**
59
     * Добавить параметр скрипта
60
     * @param string $name - имя параметра
61
     * @param mixed $value - значение параметра
62
     * @return self $this
63
     */
64
    public function addParam($name, $value)
65
    {
66
        $this->params[$name] = $value;
67
        return $this;
68
    }
69
70
    /**
71
     * Скомпилировать скрипт в elastic-query тип
72
     * @return array
73
     */
74
    public function compile()
75
    {
76
        $script = [
77
            'script' => [
78
                'lang' => $this->getLanguage(),
79
                'inline' => $this->getBody(),
80
                'params' => $this->getParams()
81
            ]
82
        ];
83
84
        // because ES
85
        if (empty($script['script']['params'])) {
86
            unset($script['script']['params']);
87
        }
88
89
        return $script;
90
    }
91
92
    /**
93
     * Скомпилировать тело скрипта
94
     * @return string
95
     */
96
    public function getBody()
97
    {
98
        $body = implode($this->lineSeparator, $this->lines);
99
        return $body;
100
    }
101
102
    /**
103
     * Получить параметры скрипта
104
     * @return array
105
     */
106
    public function getParams()
107
    {
108
        return $this->params;
109
    }
110
111
    /**
112
     * Получить язык скрипта
113
     * @return string
114
     */
115
    public function getLanguage()
116
    {
117
        return $this->language;
118
    }
119
}
120