HomeAction   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
dl 0
loc 42
rs 10
c 0
b 0
f 0
wmc 2
lcom 0
cbo 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A __invoke() 0 9 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Web\Action;
6
7
use Page\Service\PageService;
8
use Psr\Http\Message\ResponseInterface as Response;
9
use Psr\Http\Message\ServerRequestInterface as Request;
10
use Zend\Diactoros\Response\HtmlResponse;
11
use Zend\Expressive\Template\TemplateRendererInterface as Template;
12
13
/**
14
 * Class HomeAction.
15
 */
16
class HomeAction
17
{
18
    /** @var Template */
19
    private $template;
20
21
    /** @var PageService */
22
    private $pageService;
23
24
    /**
25
     * HomeAction constructor.
26
     *
27
     * @param Template    $template
28
     * @param PageService $pageService
29
     */
30
    public function __construct(Template $template, PageService $pageService)
31
    {
32
        $this->template = $template;
33
        $this->pageService = $pageService;
34
    }
35
36
    /**
37
     * Get homepage to display body or
38
     * need to get homepage from Pages package at least for SEO tags.
39
     *
40
     * @param Request       $request
41
     * @param Response      $response
42
     * @param callable|null $next
43
     *
44
     * @throws \Exception
45
     *
46
     * @return HtmlResponse
47
     */
48
    public function __invoke(Request $request, Response $response, callable $next = null): HtmlResponse
49
    {
50
        $page = $this->pageService->getHomepage();
51
52
        return new HtmlResponse($this->template->render('web::home', [
53
            'page'   => $page,
54
            'layout' => 'layout/web',
55
        ]));
56
    }
57
}
58