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

ViewEventManager::forgetAboutAll()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 0
cp 0
crap 2
rs 10
c 0
b 0
f 0
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