PartResolverRegistry   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A addResolver() 0 6 1
A getResolverForPart() 0 14 2
1
<?php declare(strict_types = 1);
2
3
namespace JDR\Mailer;
4
5
use InvalidArgumentException;
6
use JDR\Mailer\Part\EmailPart;
7
use JDR\Mailer\Part\EmailPartResolver;
8
9
class PartResolverRegistry
10
{
11
    /**
12
     * @var EmailPartResolver[]
13
     */
14
    private $resolvers = [];
15
16
    /**
17
     * Add Resolver.
18
     *
19
     * @param EmailPartResolver $resolver
20
     * @param string $part
21
     *
22
     * @return self
23
     */
24 1
    public function addResolver(EmailPartResolver $resolver, $part): self
25
    {
26 1
        $this->resolvers[$part] = $resolver;
27
28 1
        return $this;
29
    }
30
31
    /**
32
     * Get resolver for given email part.
33
     *
34
     * @param EmailPart $part
35
     *
36
     * @return EmailPartResolver
37
     */
38 2
    public function getResolverForPart(EmailPart $part): EmailPartResolver
39
    {
40 2
        $identifier = get_class($part);
41
42 2
        if (!array_key_exists($identifier, $this->resolvers)) {
43 1
            throw new InvalidArgumentException(sprintf(
44 1
                'Resolver for the part "%s" does not exists. Please choose one of the following: %s',
45
                $identifier,
46 1
                implode(', ', array_keys($this->resolvers))
47
            ));
48
        }
49
50 1
        return $this->resolvers[$identifier];
51
    }
52
}
53