ReadableBinaryData   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
lcom 0
cbo 0
dl 0
loc 51
ccs 14
cts 14
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A __toString() 0 13 4
A isPrintable() 0 4 1
1
<?php
2
3
namespace ButterAMQP\Debug;
4
5
class ReadableBinaryData
6
{
7
    /**
8
     * @var string
9
     */
10
    private $label;
11
12
    /**
13
     * @var string
14
     */
15
    private $data;
16
17
    /**
18
     * @param string $label
19
     * @param string $data
20
     */
21 3
    public function __construct($label, $data)
22
    {
23 3
        $this->label = $label;
24 3
        $this->data = $data;
25 3
    }
26
27
    /**
28
     * Renders binary data into a string.
29
     *
30
     * @return string
31
     */
32 1
    public function __toString()
33
    {
34 1
        $length = mb_strlen($this->data, 'ASCII');
35
36 1
        $hex = [];
37
38 1
        for ($p = 0; $p < $length; ++$p) {
39 1
            $char = $this->data[$p];
40 1
            $hex[] = ord($char).(self::isPrintable($char) ? "[$char]" : '');
41 1
        }
42
43 1
        return ($this->label ? $this->label.' ' : '').$length.' bytes: '.implode(' ', $hex);
44
    }
45
46
    /**
47
     * @param string $char
48
     *
49
     * @return bool
50
     */
51 1
    private static function isPrintable($char)
52
    {
53 1
        return strpos(' !"#$%&\'()*+,-./0123456789:;<=>?@[]^_`abcdefghijklmnopqrstuvwxyz{|}~', strtolower($char)) !== false;
54
    }
55
}
56