AMQPTable::set()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 12
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 12
ccs 5
cts 5
cp 1
rs 9.4285
cc 3
eloc 4
nc 2
nop 3
crap 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