AMQPTable   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 1 Features 0
Metric Value
wmc 4
c 1
b 1
f 0
lcom 0
cbo 2
dl 0
loc 29
ccs 7
cts 7
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getType() 0 4 1
A set() 0 12 3
1
<?php
2
namespace PhpAmqpLib\Wire;
3
4
use PhpAmqpLib\Exception;
5
6
7
class AMQPTable extends AMQPAbstractCollection
8
{
9
10
    /**
11
     * @return int
12
     */
13 15
    final public function getType()
14
    {
15 15
        return self::T_TABLE;
16
    }
17
18
    /**
19
     * @param string $key
20
     * @param mixed $val
21
     * @param integer $type
22
     */
23 65
    public function set($key, $val, $type = null)
24
    {
25
        //https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf, https://www.rabbitmq.com/resources/specs/amqp0-8.pdf
26
        //Field names MUST start with a letter, '$' or '#' and may continue with letters, '$' or '#', digits, or underlines, to a maximum length of 128 characters
27
        //The server SHOULD validate field names and upon receiving an invalid field name, it SHOULD signal a connection exception with reply code 503 (syntax error)
28
29
        //validating length only and delegating other stuff to server, as rabbit seems to currently support numeric keys
30 65
        if (!($len = strlen($key)) || ($len > 128)) {
31 10
            throw new Exception\AMQPInvalidArgumentException('Table key must be non-empty string up to 128 chars in length');
32
        }
33 60
        $this->setValue($val, $type, $key);
34 60
    }
35
}
36