Completed
Pull Request — master (#120)
by Tobias
07:31 queued 02:17
created

CommonPsr17ClassesStrategy   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 0
dl 0
loc 65
ccs 0
cts 10
cp 0
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A getCandidates() 0 11 3
1
<?php
2
3
namespace Http\Discovery\Strategy;
4
5
use Psr\Http\Message\RequestFactoryInterface;
6
use Psr\Http\Message\ResponseFactoryInterface;
7
use Psr\Http\Message\ServerRequestFactoryInterface;
8
use Psr\Http\Message\StreamFactoryInterface;
9
use Psr\Http\Message\UploadedFileFactoryInterface;
10
use Psr\Http\Message\UriFactoryInterface;
11
12
/**
13
 * @internal
14
 *
15
 * @author Tobias Nyholm <[email protected]>
16
 */
17
final class CommonPsr17ClassesStrategy implements DiscoveryStrategy
18
{
19
    /**
20
     * @var array
21
     */
22
    private static $classes = [
23
        RequestFactoryInterface::class => [
24
            'Nyholm\Psr7\Factory\Psr17Factory',
25
            'Zend\Diactoros\RequestFactory',
26
            'Http\Factory\Diactoros\RequestFactory',
27
            'Http\Factory\Guzzle\RequestFactory',
28
            'Http\Factory\Slim\RequestFactory',
29
        ],
30
        ResponseFactoryInterface::class => [
31
            'Nyholm\Psr7\Factory\Psr17Factory',
32
            'Zend\Diactoros\ResponseFactory',
33
            'Http\Factory\Diactoros\ResponseFactory',
34
            'Http\Factory\Guzzle\ResponseFactory',
35
            'Http\Factory\Slim\ResponseFactory',
36
        ],
37
        ServerRequestFactoryInterface::class => [
38
            'Nyholm\Psr7\Factory\Psr17Factory',
39
            'Zend\Diactoros\ServerRequestFactory',
40
            'Http\Factory\Diactoros\ServerRequestFactory',
41
            'Http\Factory\Guzzle\ServerRequestFactory',
42
            'Http\Factory\Slim\ServerRequestFactory',
43
        ],
44
        StreamFactoryInterface::class => [
45
            'Nyholm\Psr7\Factory\Psr17Factory',
46
            'Zend\Diactoros\StreamFactory',
47
            'Http\Factory\Diactoros\StreamFactory',
48
            'Http\Factory\Guzzle\StreamFactory',
49
            'Http\Factory\Slim\StreamFactory',
50
        ],
51
        UploadedFileFactoryInterface::class => [
52
            'Nyholm\Psr7\Factory\Psr17Factory',
53
            'Zend\Diactoros\UploadedFileFactory',
54
            'Http\Factory\Diactoros\UploadedFileFactory',
55
            'Http\Factory\Guzzle\UploadedFileFactory',
56
            'Http\Factory\Slim\UploadedFileFactory',
57
        ],
58
        UriFactoryInterface::class => [
59
            'Nyholm\Psr7\Factory\Psr17Factory',
60
            'Zend\Diactoros\UriFactory',
61
            'Http\Factory\Diactoros\UriFactory',
62
            'Http\Factory\Guzzle\UriFactory',
63
            'Http\Factory\Slim\UriFactory',
64
        ],
65
    ];
66
67
    /**
68
     * {@inheritdoc}
69
     */
70
    public static function getCandidates($type)
71
    {
72
        $candidates = [];
73
        if (isset(self::$classes[$type])) {
74
            foreach (self::$classes[$type] as $class) {
75
                $candidates[] = ['class' => $class, 'condition' => [$class]];
76
            }
77
        }
78
79
        return $candidates;
80
    }
81
}
82