Completed
Branch master (9de2b1)
by Dominik
03:28 queued 01:13
created

ArrayNode::getAddDefault()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Saxulum\ElasticSearchQueryBuilder\Node;
4
5
class ArrayNode extends AbstractParentNode
6
{
7
    /**
8
     * @param AbstractNode $node
9
     * @param bool         $allowDefault
10
     *
11
     * @return $this
12
     */
13
    public function add(AbstractNode $node, $allowDefault = false)
14
    {
15
        $node->setParent($this);
16
17
        $this->children[] = $node;
18
        $this->allowDefault[] = $allowDefault;
19
20
        return $this;
21
    }
22
23
    /**
24
     * @return array
25
     */
26
    public function getDefault()
27
    {
28
        return [];
29
    }
30
31
    /**
32
     * @return array|null
33
     */
34
    public function serialize()
35
    {
36
        $serialized = [];
37
        foreach ($this->children as $i => $child) {
38
            if (null !== $serializedChild = $child->serialize()) {
39
                $serialized[] = $serializedChild;
40
            } elseif ($this->allowDefault[$i]) {
41
                $serialized[] = $child->getDefault();
42
            }
43
        }
44
45
        if ([] === $serialized) {
46
            return;
47
        }
48
49
        return $serialized;
50
    }
51
}
52