CompositeDataProcessor::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 0
c 1
b 0
f 1
nc 1
nop 1
dl 0
loc 4
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LAG\AdminBundle\State;
6
7
use LAG\AdminBundle\Exception\Exception;
8
use LAG\AdminBundle\Metadata\OperationInterface;
9
10
class CompositeDataProcessor implements DataProcessorInterface
11
{
12
    public function __construct(
13
        /** @var DataProcessorInterface[] $processors */
14
        private iterable $processors = [],
15
    ) {
16
    }
17
18
    public function process(mixed $data, OperationInterface $operation, array $uriVariables = [], array $context = []): void
19
    {
20
        /** @var DataProcessorInterface $processor */
21
        foreach ($this->processors as $processor) {
22
            if ($processor::class === $operation->getProcessor()) {
23
                $processor->process($data, $operation, $uriVariables, $context);
24
25
                return;
26
            }
27
        }
28
29
        throw new Exception(sprintf('The admin resource "%s" and operation "%s" is not supported by any processor', $operation->getResource()->getName(), $operation->getName()));
30
    }
31
}
32