Completed
Push — master ( 9dfc82...fbb6e1 )
by Dominik
02:13
created

AbstractNode   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 0
dl 0
loc 52
ccs 9
cts 9
cp 1
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setParent() 0 8 2
A getParent() 0 4 1
A isAllowDefault() 0 4 1
getDefault() 0 1 ?
serialize() 0 1 ?
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Saxulum\ElasticSearchQueryBuilder\Node;
6
7
abstract class AbstractNode
8
{
9
    /**
10
     * @var AbstractParentNode
11
     */
12
    protected $parent;
13
14
    /**
15
     * @var bool
16
     */
17
    protected $allowDefault;
18
19
    /**
20
     * @param AbstractParentNode $parent
21
     *
22
     * @throws \InvalidArgumentException
23
     */
24 16
    public function setParent(AbstractParentNode $parent)
25
    {
26 16
        if (null !== $this->parent) {
27 2
            throw new \InvalidArgumentException('Node already got a parent!');
28
        }
29
30 16
        $this->parent = $parent;
31 16
    }
32
33
    /**
34
     * @return AbstractParentNode|null
35
     */
36 7
    public function getParent()
37
    {
38 7
        return $this->parent;
39
    }
40
41
    /**
42
     * @return bool
43
     */
44 4
    public function isAllowDefault(): bool
45
    {
46 4
        return $this->allowDefault;
47
    }
48
49
    /**
50
     * @return \stdClass|array|null
51
     */
52
    abstract public function getDefault();
53
54
    /**
55
     * @return \stdClass|array|string|float|int|bool|null
56
     */
57
    abstract public function serialize();
58
}
59