Tracer   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 2
Bugs 1 Features 0
Metric Value
dl 0
loc 30
rs 10
c 2
b 1
f 0
wmc 4
lcom 1
cbo 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A trace() 0 9 3
A addHandler() 0 4 1
1
<?php
2
3
namespace PedroTroller\TraceDebug;
4
5
use Exception;
6
7
class Tracer
8
{
9
    /**
10
     * @var TraceHandler[]
11
     */
12
    private static $handlers = [];
13
14
    /**
15
     * Capture the current stacktrace.
16
     *
17
     * @param string|null $identifier
18
     */
19
    public static function trace($identifier = null, $subtrace = 1, Exception $exception = null)
20
    {
21
        $exception = null === $exception ? new Exception() : $exception;
22
        $trace     = array_slice($exception->getTrace(), $subtrace);
23
24
        foreach (self::$handlers as $handler) {
25
            $handler->onTrace($trace, $identifier);
26
        }
27
    }
28
29
    /**
30
     * @param TraceHandler $handler
31
     */
32
    public function addHandler(TraceHandler $handler)
33
    {
34
        self::$handlers[] = $handler;
35
    }
36
}
37