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

HandlerManager::forwardRedirect()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 3
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 5
rs 10
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