Passed
Branch master (ae28f9)
by Alexey
03:06
created

MiddlewarePipelineFactory   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 66.67%

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 3
dl 0
loc 31
ccs 8
cts 12
cp 0.6667
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A create() 0 9 2
1
<?php declare(strict_types = 1);
2
3
namespace Venta\Routing\Factory;
4
5
use Venta\Contracts\Container\Container;
6
use Venta\Contracts\Routing\MiddlewarePipeline as MiddlewarePipelineContract;
7
use Venta\Contracts\Routing\MiddlewarePipelineFactory as MiddlewarePipelineFactoryContract;
8
use Venta\Routing\MiddlewarePipeline;
9
10
/**
11
 * Class MiddlewarePipelineFactory
12
 *
13
 * @package Venta\Routing
14
 */
15
final class MiddlewarePipelineFactory implements MiddlewarePipelineFactoryContract
16
{
17
    /**
18
     * @var Container
19
     */
20
    private $container;
21
22
    /**
23
     * MiddlewarePipelineFactory constructor.
24
     *
25
     * @param Container $container
26
     */
27 2
    public function __construct(Container $container)
28
    {
29 2
        $this->container = $container;
30 2
    }
31
32
    /**
33
     * @inheritDoc
34
     */
35 1
    public function create(array $middlewares): MiddlewarePipelineContract
36
    {
37 1
        $pipeline = new MiddlewarePipeline();
38 1
        foreach ($middlewares as $middleware) {
39 1
            $pipeline = $pipeline->withMiddleware($this->container->get($middleware));
40
        }
41
42 1
        return $pipeline;
43
    }
44
45
}
46