Completed
Push — master ( b4fe79...e03f7c )
by Iman
03:39
created

ViewEventManager::commitChain()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 1
dl 0
loc 6
ccs 5
cts 5
cp 1
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 18
    public function init(array $views): self
21
    {
22 18
        $this->views = $views;
23
24 18
        return $this;
25
    }
26
27
    /**
28
     * @param $listener
29
     */
30 18
    public function commitChain(callable $listener)
31
    {
32 18
        $switchableListener = app(HeyManSwitcher::class)->wrapForIgnorance($listener, 'view');
33 18
        $views = $this->views;
34 18
        foreach ($views as $view) {
35 18
            $this->data[$view][] = $switchableListener;
36
        }
37 18
    }
38
39 105
    public function start()
40
    {
41 105
        foreach ($this->data as $value => $callbacks) {
42 15
            foreach ($callbacks as $cb) {
43 15
                $this->register($value, $cb);
44
            }
45
        }
46 105
    }
47
48 4
    public function forgetAbout($views)
49
    {
50 4
        foreach ($views as $view) {
51 4
            unset($this->data[$view]);
52
        }
53 4
    }
54
55
    public function forgetAboutAll()
56
    {
57
        $this->data = [];
58
    }
59
60 15
    public function register($view, $callback)
61
    {
62 15
        view()->creator($view, $callback);
63 15
    }
64
}
65