AMQPMessageFactory   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 15 2
A create() 0 4 1
1
<?php
2
3
namespace Ajir\RabbitMqSqlBundle\DataStructure\Message;
4
5
/**
6
 *
7
 */
8
class AMQPMessageFactory implements AMQPMessageFactoryInterface
9
{
10
    /**
11
     * The default AMQPMessage class.
12
     */
13
    const DEFAULT_CLASS = 'Ajir\RabbitMqSqlBundle\DataStructure\Message\AMQPMessage';
14
15
    /**
16
     * @var \ReflectionClass
17
     */
18
    protected $class;
19
20
    /**
21
     * @throws \InvalidArgumentException
22
     *
23
     * @param string $class
24
     */
25 2
    public function __construct($class = self::DEFAULT_CLASS)
26
    {
27 2
        $interface   = 'Ajir\RabbitMqSqlBundle\DataStructure\Message\AMQPMessageInterface';
28 2
        $this->class = new \ReflectionClass($class);
29
30 2
        if (!$this->class->implementsInterface($interface)) {
31 1
            throw new \InvalidArgumentException(
32
                sprintf(
33 1
                    "'%s' should implements %s",
34 1
                    $this->class->getName(),
35
                    $interface
36
                )
37
            );
38
        }
39 1
    }
40
41
    /**
42
     * {@inheritDoc}
43
     */
44 1
    public function create()
45
    {
46 1
        return $this->class->newInstance();
47
    }
48
}
49