Passed
Pull Request — master (#57)
by Kyle
08:38
created

CanHide   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 7
dl 0
loc 32
c 2
b 0
f 0
wmc 3
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A hideWhen() 0 5 1
A hidden() 0 7 2
1
<?php
2
3
namespace KyleMassacre\Menus\Traits;
4
5
use Closure;
6
use KyleMassacre\Menus\MenuBuilder;
7
use KyleMassacre\Menus\MenuItem;
8
9
trait CanHide
10
{
11
    /**
12
     * @var Closure
13
     */
14
    protected ?Closure $hideWhen = null;
15
16
    /**
17
     * Set hide condition for current menu item.
18
     *
19
     * @param Closure $callback
20
     * @return CanHide|MenuBuilder|MenuItem
21
     */
22
    public function hideWhen(Closure $callback): self
23
    {
24
        $this->hideWhen = $callback;
25
26
        return $this;
27
    }
28
29
    /**
30
     * Determine whether the menu item is hidden.
31
     *
32
     * @return boolean
33
     */
34
    public function hidden(): bool
35
    {
36
        if (is_null($this->hideWhen)) {
37
            return false;
38
        }
39
40
        return call_user_func($this->hideWhen) == false;
41
    }
42
}
43