|
1 | 1 | <?php |
2 | 2 | /** @noinspection PhpPropertyOnlyWrittenInspection */ |
3 | | -namespace Okapi\CodeTransformer\Service; |
| 3 | +namespace Okapi\CodeTransformer\Core\Container; |
4 | 4 |
|
5 | 5 | use Error; |
6 | 6 | use Exception; |
7 | | -use Okapi\CodeTransformer\Exception\Transformer\InvalidTransformerClassException; |
8 | | -use Okapi\CodeTransformer\Exception\Transformer\TransformerNotFoundException; |
| 7 | +use Okapi\CodeTransformer\Core\DI; |
| 8 | +use Okapi\CodeTransformer\Core\Exception\Transformer\InvalidTransformerClassException; |
| 9 | +use Okapi\CodeTransformer\Core\Exception\Transformer\TransformerNotFoundException; |
| 10 | +use Okapi\CodeTransformer\Core\ServiceInterface; |
9 | 11 | use Okapi\CodeTransformer\Transformer; |
10 | 12 |
|
11 | 13 | /** |
12 | | - * # Transformer Container |
| 14 | + * # Transformer Manager |
13 | 15 | * |
14 | | - * The `TransformerContainer` class is used to manage the transformers. |
| 16 | + * This class is used to register and manage the transformers. |
| 17 | + * @todo Don't repeat class name in docs |
15 | 18 | */ |
16 | | -class TransformerContainer implements ServiceInterface |
| 19 | +class TransformerManager implements ServiceInterface |
17 | 20 | { |
18 | 21 | /** |
19 | | - * The list of transformers. |
| 22 | + * The list of transformer class strings. |
20 | 23 | * |
21 | 24 | * @var class-string<Transformer>[] |
| 25 | + * @todo CHECK if all class-string have a type |
22 | 26 | */ |
23 | 27 | private array $transformers = []; |
24 | 28 |
|
25 | 29 | /** |
26 | | - * Associative array of transformer instances by target class name. |
| 30 | + * The list of transformer containers. |
27 | 31 | * |
28 | | - * @var array<string, Transformer[]> The key is a wildcard target class name. |
| 32 | + * @var TransformerContainer[] |
29 | 33 | */ |
30 | | - private array $transformerTargets = []; |
| 34 | + private array $transformerContainers = []; |
31 | 35 |
|
32 | 36 | // region Pre-Initialization |
33 | 37 |
|
@@ -82,24 +86,34 @@ private function loadTransformers(): void |
82 | 86 | } |
83 | 87 | assert($transformerInstance instanceof Transformer); |
84 | 88 |
|
85 | | - /** @var string[] $targets */ |
86 | | - $targets = (array)$transformerInstance->getTargetClass(); |
| 89 | + // Create transformer container |
| 90 | + $transformerContainer = DI::make(TransformerContainer::class, [ |
| 91 | + 'transformerInstance' => $transformerInstance, |
| 92 | + ]); |
87 | 93 |
|
88 | | - foreach ($targets as $classRegex) { |
89 | | - $this->transformerTargets[$classRegex][] = $transformerInstance; |
90 | | - } |
| 94 | + $this->transformerContainers[] = $transformerContainer; |
91 | 95 | } |
92 | 96 | } |
93 | 97 |
|
94 | 98 | // endregion |
95 | 99 |
|
96 | 100 | /** |
97 | | - * Get the transformer targets. |
| 101 | + * Get the transformers. |
| 102 | + * |
| 103 | + * @return class-string<Transformer>[] |
| 104 | + */ |
| 105 | + public function getTransformers(): array |
| 106 | + { |
| 107 | + return $this->transformers; |
| 108 | + } |
| 109 | + |
| 110 | + /** |
| 111 | + * Get the transformer containers. |
98 | 112 | * |
99 | | - * @return array<string, Transformer[]> The key is a wildcard target class name. |
| 113 | + * @return TransformerContainer[] |
100 | 114 | */ |
101 | | - public function getTransformerTargets(): array |
| 115 | + public function getTransformerContainers(): array |
102 | 116 | { |
103 | | - return $this->transformerTargets; |
| 117 | + return $this->transformerContainers; |
104 | 118 | } |
105 | 119 | } |
0 commit comments