Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
HomeUseCase
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 execute
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3// ╔════════════════════════════════════════════════════════════╗
4// ║ MIT Licence (#Expat) - https://opensource.org/licenses/MIT ║
5// ║ Copyright 2026 Frederic Poeydomenge <dyno@phexium.com>     ║
6// ╚════════════════════════════════════════════════════════════╝
7
8declare(strict_types=1);
9
10namespace AppStarter\Homepage\Application\UseCase;
11
12use Override;
13use Phexium\Application\UseCase\UseCaseInterface;
14use Phexium\Application\UseCase\UseCaseRequestInterface;
15use Phexium\Application\UseCase\UseCaseResponseInterface;
16use Phexium\Domain\TypeGuard;
17use Phexium\Plugin\Clock\Port\ClockInterface;
18
19final readonly class HomeUseCase implements UseCaseInterface
20{
21    public function __construct(
22        private ClockInterface $clock
23    ) {}
24
25    #[Override]
26    public function execute(UseCaseRequestInterface $request): UseCaseResponseInterface
27    {
28        TypeGuard::that($request)->isInstanceOf(HomeRequest::class);
29
30        $greeting = '“The greatest glory in living lies not in never falling, '
31                   .'but in rising every time we fall.” - Nelson Mandela';
32
33        $currentDateTime = $this->clock->now();
34
35        return new HomeResponse($greeting, $currentDateTime);
36    }
37}