TransportObserve::changed()   A
last analyzed

Complexity

Conditions 4
Paths 8

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 4
eloc 5
c 1
b 0
f 1
nc 8
nop 1
dl 0
loc 9
rs 10
1
<?php
2
/**
3
 * Transport changes observe
4
 * User: moyo
5
 * Date: 2018/7/23
6
 * Time: 4:19 PM
7
 */
8
9
namespace Carno\Traced\Chips;
10
11
use Carno\Tracing\Contracts\Transport;
12
use Closure;
13
14
trait TransportObserve
15
{
16
    /**
17
     * @var Closure[]
18
     */
19
    private $tpOpening = [];
20
21
    /**
22
     * @var Closure[]
23
     */
24
    private $tpClosed = [];
25
26
    /**
27
     * @param Closure $opening
28
     * @param Closure $closed
29
     */
30
    public function transportable(Closure $opening, Closure $closed) : void
31
    {
32
        $this->tpOpening[] = $opening;
33
        $this->tpClosed[] = $closed;
34
    }
35
36
    /**
37
     * @param Transport $transport
38
     */
39
    protected function changed(Transport $transport = null) : void
40
    {
41
        foreach ($transport ? $this->tpOpening : $this->tpClosed as $observer) {
42
            $observer($transport);
43
        }
44
45
        $transport
46
            ? logger('traced')->info('Tracing platform activated', ['api' => get_class($transport)])
47
            : logger('traced')->info('Tracing platform unloaded')
48
        ;
49
    }
50
}
51