Completed
Push — master ( ee9737...268efc )
by Iman
08:18
created

ViewEventManager   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 51
ccs 14
cts 14
cp 1
rs 10
c 0
b 0
f 0
wmc 9

5 Methods

Rating   Name   Duplication   Size   Complexity  
A init() 0 5 1
A commitChain() 0 6 2
A start() 0 5 3
A forgetAboutAll() 0 3 1
A forgetAbout() 0 4 2
1
<?php
2
3
namespace Imanghafoori\HeyMan\WatchingStrategies;
4
5
use Imanghafoori\HeyMan\HeyManSwitcher;
6
7
class ViewEventManager
8
{
9
    private $views = [];
10
11
    private $data = [];
12
13
    /**
14
     * ViewEventManager constructor.
15
     *
16
     * @param $views
17
     *
18
     * @return ViewEventManager
19
     */
20 14
    public function init(array $views): self
21
    {
22 14
        $this->views = $views;
23
24 14
        return $this;
25
    }
26
27
    /**
28
     * @param $listener
29
     */
30 14
    public function commitChain(callable $listener)
31
    {
32 14
        $switchableListener = app(HeyManSwitcher::class)->wrapForIgnorance($listener, 'view');
33 14
        $views = $this->views;
34 14
        foreach ($views as $view) {
35 14
            $this->data[$view][] = $switchableListener;
36
        }
37 14
    }
38
39 91
    public function start()
40
    {
41 91
        foreach ($this->data as $view => $callbacks) {
42 14
            foreach ($callbacks as $cb) {
43 14
                view()->creator($view, $cb);
44
            }
45
        }
46 91
    }
47
48
    public function forgetAbout($views)
49
    {
50
        foreach ($views as $view) {
51
            unset($this->data[$view]);
52
        }
53
    }
54
55
    public function forgetAboutAll()
56
    {
57
        $this->data = [];
58
    }
59
}
60