Total Complexity | 5 |
Total Lines | 51 |
Duplicated Lines | 0 % |
Coverage | 93.33% |
Changes | 0 |
1 | <?php |
||
6 | class Pipeline implements PipelineInterface |
||
7 | { |
||
8 | /** |
||
9 | * @var callable[] |
||
10 | */ |
||
11 | private $stages = []; |
||
12 | |||
13 | /** |
||
14 | * @var ProcessorInterface |
||
15 | */ |
||
16 | private $processor; |
||
17 | |||
18 | /** |
||
19 | * Pipeline constructor. |
||
20 | * |
||
21 | * @param \League\Pipeline\ProcessorInterface|null $processor |
||
22 | * @param callable ...$stages |
||
23 | */ |
||
24 | 14 | public function __construct(ProcessorInterface $processor = null, callable ...$stages) |
|
28 | 14 | } |
|
29 | |||
30 | /** |
||
31 | * One pipe for your task. |
||
32 | * |
||
33 | * @param callable $stage |
||
34 | * @return \League\Pipeline\PipelineInterface|$this |
||
35 | */ |
||
36 | 8 | public function pipe(callable $stage): PipelineInterface |
|
37 | { |
||
38 | 8 | $pipeline = clone $this; |
|
39 | 8 | $pipeline->stages[] = $stage; |
|
40 | |||
41 | 8 | return $pipeline; |
|
42 | } |
||
43 | |||
44 | 10 | public function process($payload, ...$params) |
|
45 | { |
||
46 | 10 | if ($this->processor instanceof ParametersInterface) { |
|
47 | 10 | $this->processor->setParameters(...$params); |
|
48 | 10 | return $this->processor->process($payload, ...$this->stages); |
|
49 | } |
||
50 | |||
51 | return $this->processor->process($payload, ...$this->stages); |
||
52 | } |
||
53 | |||
54 | 4 | public function __invoke($payload, ...$params) |
|
57 | } |
||
58 | } |
||
59 |