MenuItem::hasSubMenu()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Modulatr\Loader\Menu;
4
5
/**
6
 * Class MenuItem
7
 *
8
 * @package Modulatr\Loader\Menu
9
 */
10
class MenuItem
11
{
12
    /**
13
     * @var string
14
     */
15
    private $url;
16
    /**
17
     * @var string
18
     */
19
    private $text;
20
21
    private $subMenu = [];
22
    /**
23
     * @var bool
24
     */
25
    private $separator = false;
26
27
    /**
28
     * LinkItem constructor.
29
     *
30
     * @param string $text
31
     * @param string $url
32
     */
33 18
    public function __construct(string $text = '', string $url = '#')
34
    {
35
36 18
        $this->text = $text;
37 18
        $this->url = $url;
38 18
    }
39
40
    /**
41
     * @param string $text
42
     * @param string $url
43
     * @return static
44
     */
45 14
    public static function build(string $text = '', string $url = '#'): self
46
    {
47 14
        return new static($text, $url);
48
    }
49
50
    /**
51
     * Create a separator Menu Item
52
     *
53
     * @return MenuItem
54
     */
55 1
    public static function separator(): self
56
    {
57 1
        $item = new static();
58 1
        $item->setSeparator();
59 1
        return $item;
60
    }
61
62
    /**
63
     * Set if the item is a separator
64
     */
65 2
    public function setSeparator()
66
    {
67 2
        $this->separator = true;
68 2
    }
69
70
    /**
71
     *
72
     * @return bool
73
     */
74 7
    public function isSeparator(): bool
75
    {
76 7
        return $this->separator;
77
    }
78
79
    /**
80
     * @return string
81
     */
82 5
    public function getUrl(): string
83
    {
84 5
        return $this->url;
85
    }
86
87
    /**
88
     * @return string
89
     */
90 5
    public function getText(): string
91
    {
92 5
        return $this->text;
93
    }
94
95
    /**
96
     * @param MenuItem $menuItem
97
     * @return MenuItem
98
     */
99 14
    public function addSubMenuItem(MenuItem $menuItem): self
100
    {
101 14
        $this->subMenu[] = $menuItem;
102 14
        return $this;
103
    }
104
105
    /**
106
     * @return bool
107
     */
108 5
    public function hasSubMenu(): bool
109
    {
110 5
        return !empty($this->subMenu);
111
    }
112
113
    /**
114
     * @return MenuItem[]
115
     */
116 5
    public function getSubMenu(): array
117
    {
118 5
        return $this->subMenu;
119
    }
120
}
121