4
4
5
5
use Nette \DI \CompilerExtension ;
6
6
use Nette \DI \Definitions \Reference ;
7
+ use Nette \DI \Definitions \ServiceDefinition ;
7
8
use Nette \DI \Helpers ;
8
9
use Nette \Utils \Strings ;
9
10
use olvlvl \ComposerAttributeCollector \Attributes ;
11
+ use olvlvl \ComposerAttributeCollector \TargetMethodParameter ;
10
12
use ReflectionClass ;
11
13
use function strtolower ;
12
14
use function substr ;
@@ -30,29 +32,7 @@ public function loadConfiguration(): void
30
32
->setType ($ class ->name )
31
33
->setAutowired ();
32
34
33
- foreach ($ autowiredParameters as $ autowiredParameter ) {
34
- if (strtolower ($ autowiredParameter ->method ) !== '__construct ' ) {
35
- continue ;
36
- }
37
- if (strtolower ($ autowiredParameter ->class ) !== strtolower ($ class ->name )) {
38
- continue ;
39
- }
40
- $ ref = $ autowiredParameter ->attribute ->ref ;
41
- if ($ ref === null ) {
42
- $ argument = Helpers::expand (
43
- '% ' . Helpers::escape ($ autowiredParameter ->name ) . '% ' ,
44
- $ builder ->parameters ,
45
- );
46
- } elseif (Strings::match ($ ref , '#^@[\w \\\\]+$#D ' ) !== null ) {
47
- $ argument = new Reference (substr ($ ref , 1 ));
48
- } else {
49
- $ argument = Helpers::expand (
50
- $ ref ,
51
- $ builder ->parameters ,
52
- );
53
- }
54
- $ definition ->setArgument ($ autowiredParameter ->name , $ argument );
55
- }
35
+ $ this ->processParameters ($ class ->name , $ definition , $ autowiredParameters );
56
36
57
37
foreach (ValidateServiceTagsExtension::INTERFACE_TAG_MAPPING as $ interface => $ tag ) {
58
38
if (!$ reflection ->implementsInterface ($ interface )) {
@@ -64,4 +44,36 @@ public function loadConfiguration(): void
64
44
}
65
45
}
66
46
47
+ /**
48
+ * @param class-string $className
49
+ * @param TargetMethodParameter<AutowiredParameter>[] $autowiredParameters
50
+ */
51
+ private function processParameters (string $ className , ServiceDefinition $ definition , array $ autowiredParameters ): void
52
+ {
53
+ $ builder = $ this ->getContainerBuilder ();
54
+ foreach ($ autowiredParameters as $ autowiredParameter ) {
55
+ if (strtolower ($ autowiredParameter ->method ) !== '__construct ' ) {
56
+ continue ;
57
+ }
58
+ if (strtolower ($ autowiredParameter ->class ) !== strtolower ($ className )) {
59
+ continue ;
60
+ }
61
+ $ ref = $ autowiredParameter ->attribute ->ref ;
62
+ if ($ ref === null ) {
63
+ $ argument = Helpers::expand (
64
+ '% ' . Helpers::escape ($ autowiredParameter ->name ) . '% ' ,
65
+ $ builder ->parameters ,
66
+ );
67
+ } elseif (Strings::match ($ ref , '#^@[\w \\\\]+$#D ' ) !== null ) {
68
+ $ argument = new Reference (substr ($ ref , 1 ));
69
+ } else {
70
+ $ argument = Helpers::expand (
71
+ $ ref ,
72
+ $ builder ->parameters ,
73
+ );
74
+ }
75
+ $ definition ->setArgument ($ autowiredParameter ->name , $ argument );
76
+ }
77
+ }
78
+
67
79
}
0 commit comments