Completed
Push — develop ( 5677b3...d9774d )
by Fabian
01:29
created

HandlerManager   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 9
c 1
b 0
f 0
dl 0
loc 37
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A forwardRedirect() 0 5 2
A registerHandler() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cakasim\Payone\Sdk\Redirect\Handler;
6
7
use Cakasim\Payone\Sdk\Redirect\Context\ContextInterface;
8
use Psr\Log\LoggerInterface;
9
10
/**
11
 * @author Fabian Böttcher <[email protected]>
12
 * @since 1.0.0
13
 */
14
class HandlerManager implements HandlerManagerInterface
15
{
16
    /**
17
     * @var LoggerInterface The SDK logger.
18
     */
19
    protected $logger;
20
21
    /**
22
     * @var HandlerInterface[] The redirect handlers.
23
     */
24
    protected $handlers = [];
25
26
    /**
27
     * @param LoggerInterface $logger The SDK logger.
28
     */
29
    public function __construct(LoggerInterface $logger)
30
    {
31
        $this->logger = $logger;
32
    }
33
34
    /**
35
     * @inheritDoc
36
     */
37
    public function registerHandler(HandlerInterface $handler): void
38
    {
39
        $this->logger->info(sprintf("Register PAYONE redirect handler '%s'.", get_class($handler)));
40
        $this->handlers[] = $handler;
41
    }
42
43
    /**
44
     * @inheritDoc
45
     */
46
    public function forwardRedirect(ContextInterface $context): void
47
    {
48
        foreach ($this->handlers as $handler) {
49
            $this->logger->info(sprintf("Forward PAYONE redirect to handler '%s'.", get_class($handler)));
50
            $handler->handleRedirect($context);
51
        }
52
    }
53
}
54