Completed
Pull Request — master (#45)
by Iman
13:28 queued 09:43
created

HeyMan   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 7
eloc 14
dl 0
loc 48
ccs 14
cts 14
cp 1
rs 10
c 0
b 0
f 0

5 Methods

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