PrototypeQuery   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 91
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 10
c 1
b 0
f 0
lcom 1
cbo 2
dl 0
loc 91
rs 10

8 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getElasticClient() 0 4 1
A setElasticClient() 0 4 1
A getListeners() 0 4 1
A createSearchQuery() 0 6 1
A createMultiQuery() 0 6 1
A addListener() 0 5 1
A removeListener() 0 9 3
1
<?php namespace Bardex\Elastic;
2
3
use Elasticsearch\Client as ElasticClient;
4
5
/**
6
 * @package Bardex\Elastic
7
 * @author Alexey Sumin <[email protected]>
8
 */
9
class PrototypeQuery
10
{
11
    /**
12
     * @var ElasticClient $client
13
     */
14
    protected $elastic;
15
16
    /**
17
     * @var IListener[]
18
     */
19
    protected $listeners = [];
20
21
22
    /**
23
     * @param ElasticClient $elastic
24
     */
25
    public function __construct(ElasticClient $elastic)
26
    {
27
        $this->elastic = $elastic;
28
    }
29
30
    /**
31
     * @return ElasticClient
32
     */
33
    public function getElasticClient()
34
    {
35
        return $this->elastic;
36
    }
37
38
    /**
39
     * @param $elastic
40
     */
41
    public function setElasticClient($elastic)
42
    {
43
        $this->elastic = $elastic;
44
    }
45
46
    /**
47
     * @return IListener[]
48
     */
49
    public function getListeners()
50
    {
51
        return $this->listeners;
52
    }
53
54
    /**
55
     * Create new instance of SearchQuery
56
     * @return SearchQuery
57
     */
58
    public function createSearchQuery()
59
    {
60
        $query = new SearchQuery($this->elastic);
61
        $query->listeners = $this->listeners;
0 ignored issues
show
Bug introduced by
The property listeners cannot be accessed from this context as it is declared protected in class Bardex\Elastic\PrototypeQuery.

This check looks for access to properties that are not accessible from the current context.

If you need to make a property accessible to another context you can either raise its visibility level or provide an accessible getter in the defining class.

Loading history...
62
        return $query;
63
    }
64
65
    /**
66
     * Create new instance of MultiQuery
67
     * @return MultiQuery
68
     */
69
    public function createMultiQuery()
70
    {
71
        $query = new MultiQuery($this->elastic);
72
        $query->listeners = $this->listeners;
0 ignored issues
show
Bug introduced by
The property listeners cannot be accessed from this context as it is declared protected in class Bardex\Elastic\PrototypeQuery.

This check looks for access to properties that are not accessible from the current context.

If you need to make a property accessible to another context you can either raise its visibility level or provide an accessible getter in the defining class.

Loading history...
73
        return $query;
74
    }
75
76
    /**
77
     * @param IListener $listener
78
     * @return $this
79
     */
80
    public function addListener(IListener $listener)
81
    {
82
        $this->listeners[] = $listener;
83
        return $this;
84
    }
85
86
    /**
87
     * @param IListener $listener
88
     * @return $this
89
     */
90
    public function removeListener(IListener $listener)
91
    {
92
        foreach ($this->listeners as $i => $listItem) {
93
            if ($listener === $listItem) {
94
                unset($this->listeners[$i]);
95
            }
96
        }
97
        return $this;
98
    }
99
}
100