Passed
Push — master ( 66fdc9...e2b180 )
by Alexander
08:00 queued 05:21
created

AbstractController   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 33
ccs 12
cts 12
cp 1
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
A render() 0 14 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Controller;
6
7
use Psr\Http\Message\ResponseInterface;
8
use Yiisoft\Aliases\Aliases;
9
use Yiisoft\View\ViewContextInterface;
10
use Yiisoft\View\WebView;
11
use Yiisoft\Yii\Web\Data\DataResponseFactoryInterface;
12
13
use function array_merge;
14
15
abstract class AbstractController implements ViewContextInterface
16
{
17
    private WebView $webView;
18
    protected Aliases $aliases;
19
    protected DataResponseFactoryInterface $responseFactory;
20
21 8
    public function __construct(
22
        Aliases $aliases,
23
        DataResponseFactoryInterface $responseFactory,
24
        WebView $webView
25
    ) {
26 8
        $this->aliases = $aliases;
27 8
        $this->responseFactory = $responseFactory;
28 8
        $this->webView = $webView;
29 8
    }
30
31 8
    protected function render(string $view, array $parameters = []): ResponseInterface
32
    {
33 8
        $content = $this->webView->render(
34 8
            '//main',
35 8
            array_merge(
36
                [
37 8
                    'content' => $this->webView->render($view, $parameters, $this)
38
                ],
39 8
                $parameters
40
            ),
41
            $this
42
        );
43
44 8
        return $this->responseFactory->createResponse($content);
45
    }
46
47
    abstract public function getViewPath(): string;
48
}
49