DefaultMatcherFactory   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 4
Bugs 1 Features 2
Metric Value
wmc 3
c 4
b 1
f 2
lcom 0
cbo 2
dl 0
loc 31
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A create() 0 12 2
1
<?php
2
3
/**
4
 * This file is part of expect package.
5
 *
6
 * (c) Noritaka Horio <[email protected]>
7
 *
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
namespace expect\factory;
12
13
use expect\MatcherContainer;
14
use expect\MatcherFactory;
15
16
/**
17
 * Default factory of matcher.
18
 *
19
 * <code>
20
 * $dict = new MatcherDictionary([
21
 *     'toEqual' => new MatcherClass('\\expect\\matcher', 'ToEqual')
22
 * ]);
23
 * $factory = new DefaultMatcherFactory($dict);
24
 * $matcher = $factory->create('toEqual', [ 'foo' ]); //return \expect\matcher\ToEqual instance
25
 * </code>
26
 *
27
 * @author Noritaka Horio <[email protected]>
28
 * @copyright Noritaka Horio <[email protected]>
29
 *
30
 * @see \expect\MatcherDictionary
31
 * @see \expect\package\MatcherClass
32
 */
33
class DefaultMatcherFactory implements MatcherFactory
34
{
35
    /**
36
     * @var \expect\MatcherContainer
37
     */
38
    private $container;
39
40
    /**
41
     * @param \expect\MatcherContainer $container macther container
42
     */
43
    public function __construct(MatcherContainer $container)
44
    {
45
        $this->container = $container;
46
    }
47
48
    /**
49
     * {@inheritdoc}
50
     */
51
    public function create($name, array $arguments = [])
52
    {
53
        $matcherClass = $this->container->get($name);
54
55
        if (count($arguments) <= 1) {
56
            $matcher = $matcherClass->newInstance($arguments);
57
        } else {
58
            $matcher = $matcherClass->newInstance([$arguments]);
59
        }
60
61
        return $matcher;
62
    }
63
}
64