DefaultMatcherFactory::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 1
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