Issues (135)

UseCase/CommandHandler/UseCaseCommandHandler.php (1 issue)

Labels
Severity
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Gember\EventSourcing\UseCase\CommandHandler;
6
7
use Gember\EventSourcing\Registry\CommandHandler\CommandHandlerNotRegisteredException;
8
use Gember\EventSourcing\Registry\CommandHandler\CommandHandlerRegistry;
9
use Gember\EventSourcing\Resolver\Common\DomainTag\DomainTagValueHelper;
10
use Gember\EventSourcing\Resolver\DomainCommand\DomainCommandResolver;
11
12
final readonly class UseCaseCommandHandler
0 ignored issues
show
A parse error occurred: Syntax error, unexpected T_READONLY, expecting T_CLASS on line 12 at column 6
Loading history...
13
{
14 3
    public function __construct(
15
        private CommandHandlerRegistry $commandHandlerRegistry,
16
        private DomainCommandResolver $domainCommandResolver,
17
        private UseCaseCommandExecutor $useCaseCommandExecutor,
18 3
    ) {}
19
20
    /**
21
     * @throws CommandHandlerNotRegisteredException
22
     */
23 3
    public function __invoke(object $command): void
24
    {
25 3
        [$useCaseClassName, $commandHandlerDefinition] = $this->commandHandlerRegistry->retrieve($command::class);
26
27 3
        $methodName = $commandHandlerDefinition->methodName;
28
29 3
        $domainTags = DomainTagValueHelper::getDomainTagValues(
30 3
            $command,
31 3
            $this->domainCommandResolver->resolve($command::class)->domainTags,
32 3
        );
33
34 3
        $this->useCaseCommandExecutor->execute(
35 3
            $command,
36 3
            $commandHandlerDefinition,
37 3
            $useCaseClassName,
38 3
            $methodName,
39 3
            ...$domainTags,
40 3
        );
41
    }
42
}
43