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

AbstractController::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 3
dl 0
loc 8
ccs 4
cts 4
cp 1
crap 1
rs 10
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