Completed
Push — develop ( 67e161...8b0772 )
by Paul
05:50
created

ContainerFactory   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 19
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 10
c 0
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A invoke() 0 14 1
1
<?php
2
3
namespace PhpUnitGen\Container;
4
5
use PhpParser\Parser;
6
use PhpParser\ParserFactory;
7
use PhpUnitGen\Configuration\ConfigInterface;
8
use PhpUnitGen\Configuration\ConsoleConfigInterface;
9
use PhpUnitGen\Parser\DirectoryParser;
10
use PhpUnitGen\Parser\ParserInterface\DirectoryParserInterface;
11
use PhpUnitGen\Parser\ParserInterface\PhpFileParserInterface;
12
use PhpUnitGen\Parser\PhpFileParser;
13
14
/**
15
 * Class ContainerFactory.
16
 *
17
 * @author     Paul Thébaud <[email protected]>.
18
 * @copyright  2017-2018 Paul Thébaud <[email protected]>.
19
 * @license    https://opensource.org/licenses/MIT The MIT license.
20
 * @link       https://github.com/paul-thebaud/phpunit-generator
21
 * @since      Class available since Release 2.0.0.
22
 */
23
class ContainerFactory implements ContainerFactoryInterface
24
{
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public function invoke(ConfigInterface $config): ContainerInterface
29
    {
30
        $container = new Container();
31
32
        // Instance dependencies
33
        $container->setInstance(ConfigInterface::class, $config);
34
        $container->setInstance(ConsoleConfigInterface::class, $config);
35
        $container->setInstance(Parser::class, (new ParserFactory())->create(ParserFactory::PREFER_PHP7));
36
37
        // Automatically created dependencies and aliases
38
        $container->set(DirectoryParserInterface::class, DirectoryParser::class);
39
        $container->set(PhpFileParserInterface::class, PhpFileParser::class);
40
41
        return $container;
42
    }
43
}
44