Completed
Push — master ( b2eaf8...dfdf36 )
by Iman
08:38 queued 05:36
created

HeyMan   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Test Coverage

Coverage 93.75%

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 47
ccs 15
cts 16
cp 0.9375
rs 10
c 0
b 0
f 0
wmc 8

6 Methods

Rating   Name   Duplication   Size   Complexity  
A writeDebugInfo() 0 3 1
A turnOn() 0 3 1
A turnOff() 0 3 1
A forget() 0 3 1
A __call() 0 7 3
A situations() 0 7 1
1
<?php
2
3
namespace Imanghafoori\HeyMan;
4
5
use Imanghafoori\HeyMan\Situations\EloquentSituations;
6
use Imanghafoori\HeyMan\Situations\EventSituations;
7
use Imanghafoori\HeyMan\Situations\RouteSituations;
8
use Imanghafoori\HeyMan\Situations\ViewSituations;
9
10
class HeyMan
11
{
12 15
    public function turnOff(): Consider
13
    {
14 15
        return new Consider('turnOff');
15
    }
16
17 1
    public function turnOn(): Consider
18
    {
19 1
        return new Consider('turnOn');
20
    }
21
22 13
    public function forget(): Forget
23
    {
24 13
        return new Forget();
25
    }
26
27 102
    public function __call($method, $args)
28
    {
29 102
        $this->writeDebugInfo(debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 2));
30
31 102
        foreach ($this->situations() as $className) {
32 102
            if (method_exists($className, $method)) {
33 102
                return app($className)->$method(...$args);
34
            }
35
        }
36
    }
37
38
    /**
39
     * @return array
40
     */
41 102
    private function situations(): array
42
    {
43
        return [
44 102
            RouteSituations::class,
45
            ViewSituations::class,
46
            EloquentSituations::class,
47
            EventSituations::class,
48
        ];
49
    }
50
51
    /**
52
     * @param $d
53
     */
54 102
    private function writeDebugInfo($d)
55
    {
56 102
        app(Chain::class)->debugInfo = array_only($d[1], ['file', 'line', 'args']);
57 102
    }
58
}
59