AMQPMessageFactory::__construct()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

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