Tracy::__call()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 2
dl 0
loc 8
ccs 0
cts 4
cp 0
crap 6
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Recca0120\LaravelTracy;
4
5
use Tracy\Bar;
6
use Tracy\Debugger;
7
8
class Tracy
9
{
10
    /**
11
     * $bar.
12
     *
13
     * @var \Tracy\Bar
14
     */
15
    protected $bar;
16
17
    /**
18
     * __construct.
19
     *
20
     * @param array $config
21
     * @param BarManager $barManager
22
     * @param \Tracy\Bar $bar
23
     */
24
    public function __construct($config = [], BarManager $barManager = null, Bar $bar = null)
25
    {
26
        $config = array_merge([
27
            'directory' => null,
28
            'email' => null,
29
            'emailSnooze' => null,
30
            'enabled' => true,
31
            'showBar' => true,
32
            'editor' => 'subl://open?url=file://%file&line=%line',
33
            'maxDepth' => 4,
34
            'maxLength' => 1000,
35
            'scream' => true,
36
            'showLocation' => true,
37
            'strictMode' => true,
38
            'panels' => [
39
                'routing' => false,
40
                'database' => true,
41
                'model' => false,
42
                'view' => false,
43
                'event' => false,
44
                'session' => true,
45
                'request' => true,
46
                'auth' => true,
47
                'terminal' => false,
48
            ],
49
        ], $config);
50
51
        $mode = $config['enabled'] === true ? Debugger::DEVELOPMENT : Debugger::PRODUCTION;
52
        $config = DebuggerManager::init($config);
53
        Debugger::enable($mode, $config['directory'], $config['email']);
54
        if (is_null($config['emailSnooze']) === false) {
55
            Debugger::getLogger()->emailSnooze = $config['emailSnooze'];
56
        }
57
58
        $bar = $bar ?: Debugger::getBar();
59
        $barManager = $barManager ?: new BarManager($bar);
60
61
        $this->bar = $barManager->loadPanels($config['panels'])->getBar();
62
    }
63
64
    /**
65
     * __call.
66
     *
67
     * @param string $method
68
     * @param array $parameters
69
     * @return mix
70
     */
71
    public function __call($method, $parameters)
72
    {
73
        if (method_exists($this->bar, $method) === true) {
74
            return call_user_func_array([$this->bar, $method], $parameters);
75
        }
76
77
        return call_user_func_array(['\Tracy\Debugger', $method], $parameters);
78
    }
79
80
    /**
81
     * instance.
82
     *
83
     * @param  array$config
84
     * @return static
85
     */
86
    public static function instance($config = [], BarManager $barManager = null, Bar $bar = null)
87
    {
88
        static $instance;
89
90
        if (is_null($instance) === false) {
91
            return $instance;
92
        }
93
94
        return $instance = new static($config, $barManager, $bar);
95
    }
96
}
97